2012-07-26 35 views
0

我在我的控制器中有一個方法,該方法由我的Rails應用程序中的鏈接觸發。一切在開發模式下都能正常工作,但無論出於何種原因,它在生產模式下都不起作用。每當我打電話給其中一個命令時,它就會變成它想要做某事的齒輪,但從來沒有真正做過任何事情。然而,奇怪的是,太陽黑子的REINDEX確實有效。我正在查看我的生產日誌並監視由每個服務創建的PID文件。另外,如果我在我的SSH終端會話中正常運行這些命令,它們工作正常。在Rails方法中使用Shell命令切換服務/任務

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 
+0

僅用於代碼改進:用例代替if/elsif和符號:) – Hannes 2013-12-03 22:06:36

回答

0

我想出了這個問題。在郵遞員和太陽黑子解決方案的這兩種情況下,我的生產環境都需要對正在創建文件的pid文件夾進行寫入訪問。當我運行命令啓動/停止終端中的服務時,它找到了,但必須將該文件夾的權限提升到rails/apache用戶。