0

Railsアプリケーションのリンクによってトリガーされるメソッドがコントローラーにあります。すべてが開発モードで完全に機能しますが、何らかの理由で、本番モードでは機能しません。コマンドの1つを呼び出すと、何かをしようとしているようにギアが回転しますが、実際には何もしません。しかし、奇妙なことに、黒点の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とsunspotsolrのどちらの場合も、本番環境では、ファイルを作成していたpidフォルダーへの書き込みアクセスが必要でした。ターミナルでサービスを開始/停止するコマンドを実行すると、検索は機能しましたが、そのフォルダーの特権をrails/apacheユーザーに昇格させる必要がありました。

于 2012-07-26T22:45:46.977 に答える