0

我的控制器中有一个由 Rails 应用程序中的链接触发的方法。一切都在开发模式下完美运行,但无论出于何种原因,它都无法在生产模式下运行。每当我调用其中一个命令时,它都会像试图做某事一样转动它的齿轮,但实际上从不做任何事情。然而,奇怪的是太阳黑子的 REINDEX 确实有效。我正在查看我的生产日志并监控每个服务创建的 PID 文件。此外,如果我在我的 SSH 终端会话中正常运行这些命令,它们工作正常。

  def toggle_service
    command = params[:string].to_s
    if command == 'stop_mailman_server'
      system("ruby #{::Rails.root}/script/mailman_daemon.rb stop")
    elsif  command == 'start_mailman_server'
      system("ruby #{::Rails.root}/script/mailman_daemon.rb start")
    elsif  command == 'start_search_server'
      system("rake sunspot:solr:start RAILS_ENV=#{Rails.env}")
    elsif  command == 'stop_search_server'
      system("rake sunspot:solr:stop RAILS_ENV=#{Rails.env}")
    elsif  command == 'reindex_search_server'
      system("rake sunspot:reindex RAILS_ENV=#{Rails.env}")
    end    
    redirect_to :back
  end
4

1 回答 1

0

我弄清楚了这个问题。在 mailman 和 sunspot solr 的这两种情况下,我的生产环境都需要对它正在创建文件的 pid 文件夹进行写访问。当我运行命令在终端中启动/停止服务时,它可以找到,但必须将该文件夹的权限提升到 rails/apache 用户。

于 2012-07-26T22:45:46.977 回答