0

awsマイクロサーバーにRuby on Railsプロジェクトを(capistranoで)デプロイしました。私は ruby​​ 1.9.2-290 と rails 3.2.6 を使用しており、バンドラーも使用しています。opt/rails-project/lib/tasks/tasks.rake でタスクレーキを開発しました

namespace :myclass do
    task "my-task" => :environment do
        # do the stuff which work nicely if i enter my command line manually
    end
end

これは私のcrontabでそれを呼び出す方法です:

*/3 * * * * cd /opt/rails-project/current && /opt/rails-project/shared/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake myclass:my-task RAILS_ENV=production >> ~/logs-my-task.txt

ファイル ~/logs-my-task.txt が作成され、3 分ごとに更新されます。このファイルには capistrano からのバージョン リリースの情報のみが含まれており、私のタスク rake からの情報は含まれていません。

タスク レーキのコメントで述べたように、このコマンドを ssh 経由でサーバーで直接起動すると、タスク レーキが機能します...

昼夜を問わずウェブを検索しましたが、わかりません。

Rails から http_basic 認証を削除しようとしましたが、同じ問題が発生しました。

アイデアがあるといいのですが、助けてくれてありがとう!

4

2 に答える 2

0

この部分を入れてみてください

cd /opt/rails-project/current && /opt/rails-project/shared/bundle/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake myclass:my-task RAILS_ENV=production >> ~/logs-my-task.txt

一部のファイル内でsomescript.sh、実行権限を付与します。

chmod +x somescript.sh

手動で実行してみてください:

/path/to/somescript.sh

動作する場合は、crontab に入れてみてください。

*/3 * * * * /path/to/somescript.sh

スクリプト内に複雑なものを入れて、crontab から実行すると役立つことがよくあります。

次のステップでは、PATH 環境変数がシェルと cron で同じであることを確認します。crontab またはスクリプト内で設定できます。

于 2012-08-02T06:27:25.250 に答える
0

が推奨するシェルスクリプトを使用しdenis.peplinて手動で起動した後、ここで説明されている問題が発生しました: Ruby on Rails and Rake problems: uninitialized constant Rake::DSL

Rakefile に次の行を含め、crontab を以前のままにしました。

require 'rake/dsl_definition'
于 2012-08-02T17:53:47.153 に答える