如何在.conf文件中添加动态代码/ ruby​​代码

时间:2017-05-02 13:28:00

标签: ruby linux unix thinking-sphinx

我正在为我的应用程序使用Sphinx搜索引擎,我想在sphinx.conf文件中添加ruby代码,以根据我的应用程序服务器主机名动态更新某些值?是否可以在sphinx.conf中执行ruby代码?像下面的东西

{
  type = mysql
  sql_host = testHost
  sql_user = test
  sql_pass = <%= D.decrypt("encrypted password") %> // Ruby CODE
  sql_db = {{database_name}}
  sql_query_pre = SET TIME_ZONE = '+0:00'
  sql_query_pre = SET SESSION group_concat_max_len = 32768
  sql_query_pre = SET NAMES utf8
 }

1 个答案:

答案 0 :(得分:0)

简而言之,不可能。 Sphinx无法直接在其.conf文件中执行Ruby。

话虽这么说,您可以使用环境变量来保护密码不在您的配置文件中:

{
  type = mysql
  sql_host = testHost
  sql_user = test
  sql_pass = $SQL_PASS
  sql_db = {{database_name}}
  sql_query_pre = SET TIME_ZONE = '+0:00'
  sql_query_pre = SET SESSION group_concat_max_len = 32768
  sql_query_pre = SET NAMES utf8
 }

然后,您可以在运行Sphinx时在命令行中设置环境变量:

SQL_PASS="mypassword123" indexer -c /path/to/config

或者在.bashrc中设置:

export SQL_PASS="mypassword123"

或者将其设置为ruby:

ENV["SQL_PASS"] = "mypassword123"

请记住,无论您选择何种方法,都必须在运行Sphinx之前设置环境变量