BETA

org-babelのコードブロックの設定を共通化する

投稿日:2019-06-01
最終更新:2019-06-01

Org-modeのプラグインであるorg-babelでドキュメント内に記述したコードを実行する方法と #+PROPERTY: 構文を使った設定設定の共通化の方法をまとめました。

おしながき

  1. コードブロックとorg-babel
  2. コードブロックの設定を共通化する
  3. 参考

コードブロックとorg-babel

org-babelを使うとOrgのコードブロックを実行し結果をファイルに反映できます。

#+HEADER: :engine mysql  
#+HEADER: :dbhost 127.0.0.1  
#+HEADER: :dbuser person_local  
#+HEADER: :dbpassword local12345  
#+BEGIN_SRC sql   
SELECT 1;   
#+END_SRC  

#+RESULTS:  
| 1 |  
|---|  
| 1 |  

コードブロックにポイントがある状態で C-c C-c を実行すると #+RESULTS: のブロックが挿入されます。このファイルはOrgファイルなのでもちろんドキュメントを書くこともできますし、タスク管理を内部で行うこともできます。そのためSQLの説明を前後に記述して、ドキュメントと動作するコードを近い位置に配置することができます。

コードブロックの設定を共通化する

先ほどの例のようにSQLのコードブロックが複数あると #+HEADER: で設定している接続情報も複数箇所に記述することになってしまいます。ただ接続情報はコードブロックで共通であることが多いと思うので、その設定も共通化したいです。

Orgでは #+PROPERTY: 構文を使ってこの設定を共通化できます。

#+PROPERTY: header-args:sql :engine mysql :dbhost 127.0.0.1 :dbuser person_local :dbpassword local12345 :database person_local  

1行ではなく複数行でこの設定を行いたい場合は次のように2行目以降に header-args+ を使うこともできます。

#+PROPERTY: header-args:sql   
#+PROPERTY: header-args+:sql :engine mysql   
#+PROPERTY: header-args+:sql :dbhost 127.0.0.1   
#+PROPERTY: header-args+:sql :dbuser person_local   
#+PROPERTY: header-args+:sql :dbpassword local12345   
#+PROPERTY: header-args+:sql :database person_local  

設定を追加したら C-c C-c (org-ctrl-c-ctrl-c) を実行して設定を読み込む必要があります。

#+BEGIN_SRC sql   
SELECT 1;   
#+END_SRC  

#+RESULTS:  
| 1 |  
|---|  
| 1 |  

参考

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

そして粛々と生きる

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう