【问题标题】:How to add dynamic code/ruby code inside .conf file如何在 .conf 文件中添加动态代码/ruby 代码
【发布时间】:2017-05-02 13:28:00
【问题描述】:

我正在为我的应用程序使用 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
 }

【问题讨论】:

  • 使用 erb 模板和File.write。我错过了什么吗?
  • 我只想直接在.conf文件里面执行。

标签: ruby linux unix thinking-sphinx


【解决方案1】:

简而言之,不,这是不可能的。 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 之前设置环境变量

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多