【问题标题】:How do I start the sphinx daemon automatically when my rails application loads?当我的 rails 应用程序加载时,如何自动启动 sphinx 守护进程?
【发布时间】:2010-10-20 04:18:18
【问题描述】:

我知道手动启动 sphinx 守护程序的命令。我使用 rake 任务:“rake thinking_sphinx:start” 是否可以在我的 rails 应用程序加载时启动它,这样我就不必每次都手动输入命令?

【问题讨论】:

    标签: ruby-on-rails ruby automation sphinx thinking-sphinx


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      如果您通过 capistrano 进行部署(您应该这样做),只需将其添加为 after_deploy:

      desc "每次成功部署后运行这个"

        task :after_deploy, :roles => :app do
              run "#{current_path}/rake thinking_sphinx:start"
        end
      

      【讨论】:

      • cool....我希望这也发生在我的本地机器上。我在想任何时候我启动服务器(ruby 脚本/服务器),狮身人面像也应该启动
      【解决方案3】:

      您应该能够测试它是否正在运行并从 Rails 中启动它(使用 back-ticks%x{...} 表示法。

      鉴于(正如您在 cmets 中所说的)这是一项 rake 任务,您可能希望这样做而不是使用反引号:

      Rake::Task['thinking_sphinx:start'].invoke
      

      【讨论】:

      • 我尝试将rake thinking_sphinx:start 放入initializers/custom.rb 中,但没有成功。 rails 正在尝试做某事,但它冻结并且服务器永远不会启动。一个例子会很有帮助
      • 奇数。我还没有通过 rake 任务完成此操作。您可能希望确保您在正确的目录中。鉴于这是一项繁重的任务,我会更新我的答案......
      • 谢谢,比以前好多了...但是 Rake 没有被识别。 `load_missing_constant': 未初始化的常量 Rake (NameError) 你会把代码放在哪里?我想我需要包含一些东西或将代码移到其他地方......
      • hmmm...所以我添加了 require 'rake' ...现在我收到此错误:不知道如何构建任务 'thinking_sphinx:start' (RuntimeError)
      • 任务定义在哪里?你需要把它放在你的应用程序的 lib/tasks/ 或类似的地方。
      【解决方案4】:

      将启动它的命令放在你的 config/initializers/custom.rb 中

      【讨论】:

        【解决方案5】:

        我不得不在我的应用程序中执行相同的操作,但使用的是 Windows。如果您陷入同样的​​困境,您会发现如果您执行以下操作,您的生活会轻松得多:

        if app_not_already_running
          IO.popen("start app") do |fd|
          end
        end
        

        我正在查看旧代码,但我不记得 do |fd|真的很有必要。试一试。

        “开始”很重要的原因是让窗口成为​​被诅咒的东西的背景。呸!

        【讨论】:

        • 我基本上只是想在初始化时运行一个 rake 任务,所以不确定是否适用
        【解决方案6】:

        如上所述,在 config/initializers.xml 中创建一个文件。例如,我创建了一个名为 initializers/start_thinking_sphinx.rb 的文件。在我放的文件中

        require 'rake'
        require 'rake/testtask'
        require 'rake/rdoctask'
        require 'tasks/rails'
        require "#{RAILS_ROOT}/vendor/plugins/thinking-sphinx/tasks/thinking_sphinx_tasks"
        Rake::Task['thinking_sphinx:start'].invoke
        

        如果我随后使用脚本/服务器启动服务器,这将有效。但是,如果我从乘客开始,则不起作用:(

        【讨论】:

          【解决方案7】:

          虽然这篇文章已经很老了,但为了完整起见,我添加了我的解决方案......

          我在不使用 rake 的情况下启动 sphinx 守护程序,方法是将以下代码放入 config/initializers/launch_sphinx.rb。

          Kernel.system("/usr/local/sphinx/bin/searchd --pidfile --config [full-path-to-your-app]/config/#{RAILS_ENV}.sphinx.config")
          

          重要

          根据需要更改 searchd 和 rails 应用程序的路径。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-08-28
            • 1970-01-01
            • 1970-01-01
            • 2017-10-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多