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

标签 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
 }

最佳答案

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

关于ruby - 如何在 .conf 文件中添加动态代码/ruby 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43739143/

相关文章:

ruby-on-rails - has_many 嵌套中的自定义 RESTful 路由

ruby - 根据数据库中的值显示要选中或取消选中的 Rails 复选框

Ruby 类方法与特征类中的方法

php - Jorani - 无法加载请求的语言文件 : language/fr/global_lang. php

c - 重定向错误仅发生在 "ls"命令上。其他命令重定向得很好。我的代码有什么问题吗?

linux - 提取两列并在剩余的第一列中搜索特定单词而不切割剩余的

linux - 使用 awk 覆盖输入文件

unix - 如何使用awk进行文件复制。在 awk 中使用拆分进行复制不起作用

c - 打开并写入文件函数/将变量传递给c中的函数?

ruby - 如果另一个测试失败,我可以跳过一个测试吗?