Вдохновленный этим отличным постом, я пытаюсь использовать комбинацию org-mode
и babel
для выдачи запросов к elasticsearch
. Например, подсчет количества записей в индексе:
#+BEGIN_SRC sh
curl -XGET 'http://my.uri.example:8080/index/_count'
#+END_SRC
Приведенный выше код можно оценить с помощью C-c C-c
, когда точка находится в блоке.1
С другой стороны, в организационном документе можно определить макросы. Мой вопрос: можно ли определить макрос
#+MACRO: live-db http://my.uri.example:8080
и перепишите блок кода следующим образом:
#+BEGIN_SRC sh
curl -XGET '{{{live-db}}}/index/_count'
#+END_SRC
Из коробки у меня не заработало... Вроде babel
не разворачивает макрос перед оценкой блока. Идеи?
Редактировать
Теперь, когда я узнал, что могу использовать es-mode
, я не буду уточнять свой вопрос. Рассмотрим следующие два запроса:
#+BEGIN_SRC es :url http://mu.uri.stage:8080
GET /users/_search?pretty
{
"query": {
"match_all":{}
}
}
#+END_SRC
и
#+BEGIN_SRC es :url http://mu.uri.live:8080
GET /users/_search?pretty
{
"query": {
"match_all":{}
}
}
#+END_SRC
Они просто отличаются URL-адресом. Я хотел бы определить два макроса:
#+MACRO staging http://my.uri.stage:8080
#+MACRO live http://my.uri.live:8080
а затем использовать макросы в качестве переменных блоков. Является ли это возможным?
1 Убедитесь, что вы включили оценку sh
. Добавьте что-то вроде:
(org-babel-do-load-languages
'org-babel-load-languages
'((sh . t)))
к вашему .emacs
.