2016-05-20 10 views
1

Railsを起動する前または起動する前にコマンドを実行する必要があります。それは私のチャットアプリが動作するようにポート9292でサーバーを起動します。Railsの起動時にOSコマンドを実行するには?

このコマンドは、Rails(プロダクションと開発)上で自動的に実行されることが望ましいです。

これをRails 4でどうやって行うのですか?

カプリストラノは唯一のオプションですか? Railsの起動時に実行するようにスケジュールすることはできますか?

答えて

0

あなたがCapistranoを使いたくない場合は、私が知っている2つの選択肢があります。あなたのconfig/application.rbで

config.after_initialize do 
    # .... 
end 

http://guides.rubyonrails.org/configuring.html

か、on_server_startイベントで実行されるカスタム初期化子を書くことができます。

+1

私は間違っているかもしれませんが、私はそれは良い考えではないと思います。プロダクションでは、確かにいくつかのインスタンスが動作しています。だから、チャットサーバーのいくつかの時間を開始しようとします – Fred

+0

それは良い点であり、私はカピストラノがこれを行う正しい方法であることに同意します。それはビクターが何らかの理由でカピストラーノのルートに行きたくないようだと言われました。 after_initializeを使用すると、実際にサーバーを起動して複数のインスタンスの問題を解決する前に、サーバーが実行されているかどうかを確認することができます。 –

+1

実際の運用環境では、あなたの答えは無駄です。チャットサーバーがクラッシュした場合、チャットサーバーを再起動しますか? – Fred

2

チャットサーバーのインスタンスを管理するには、capistranoとformanまたはsystemdを使用します(たとえば、sidekiqの場合など)。

良いスタートは次のようになります。config/initializers/:起動時の動作のために意図config/の全体のセクションがありますhttp://anlek.com/2015/01/using-foreman-with-upstart-capistrano/

-1

。アプリの起動の一環として何かをする必要がある場合は、ここにイニシャライザファイルを作成し、Railsの起動時に自動的に実行されます。私たちは、アプリケーションのためのさまざまな起動やシステム健全性チェックのためにこれを使用

# This file will start and establish an initial connection to the chat app 
`chat-app --some-arg` # <== The chat app 

config/initializers/chat_app.rb:単純に新しいファイルを作成し、これを行うには

。デプロイメントとは独立しているため、他のデプロイメントのために必要な場合は、Capistrano(またはRake)タスクを作成する方が良い方法です。

+0

@VictorFerreiraこれがあなたの質問に答えた場合は、答えの隣のチェックマークをクリックしてそれを受け入れてください。チェックマークが緑色に変わります。アップホーテも常に高く評価されています。 :D –

関連する問題