2016-08-10 7 views
0

を必要といけませんエラー:いくつか検索し、ここで質問した後/bin/sh: ruby /Users/diogo/workspace/outros/crawler_trf/get_news.rb: No such file or directoryのcrontabには、実行は、私はOSX版を使用していると私はパスでRubyスクリプトを作成し

私は引用符を削除し、この問題を解決し、今、私のcrontabは、以下のようになります。*/1 * * * * cd /Users/diogo/workspace/outros/crawler_trf/ && ruby get_news.rb > /tmp/crawler_trf.out

しかし、今私は、新しいエラー抱えている:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mail (LoadError) 
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
from get_news.rb:3:in `<main>' 

私のファイルの先頭には、次のとおりです。

require 'nokogiri' 
require 'open-uri' 
require 'mail' 

マイルビーバージョンは2.3.0であり、私はそれが私がインストールさ.ruby-versionで指定し、 `.ruby-gemset

で指定gemsetを使用していバンドルでの宝石

私は本当に長い間私の答えを探していましたが、何も見つかりませんでした。

+0

どのようにこれらの宝石をインストールしていますか?それらのために 'gem install'を実行しましたか?あるいは、もし彼らがプロジェクトのGemfileに入っていたら、代わりに 'bundle exec ruby​​'を試してみてください。 –

+0

バンドル受信エラーで実行すると '/ bin/sh:bundle:command not found' 私の投稿を編集してルビーのバージョンを追加し、宝石をインストールする方法 –

答えて

1

cronで提供される環境がログイン環境と異なるため、すべてのファイルのパスをcronから実行する際には、常に完全に指定する必要があります。つまり、rubyの呼び出しをルビバイナリのフルパス(おそらく/usr/local/bin/ruby)に置き換えることができます。

あなたがピックアップしているバージョンを確認するには、ruby -vをcronから実行してみてください。私のMac OSシステムでは、私は2つを持っています:

Edwards-MacBook-Air:~ emv$ /usr/bin/ruby -v 
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15] 
Edwards-MacBook-Air:~ emv$ /usr/local/bin/ruby -v 
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15] 

オペレーティングシステムから1つ、ホームブリューから1つです。

+0

'/usr/local/bin/ruby 'ruby -v'の応答は ruby​​ 2.3.0p0(2015-12-25リビジョン53290)[x86_64-darwin14] –

+0

ルビのバイナリを' which ruby​​'で探して '/ Users/ruby-2.3.0/bin/ruby​​'このパスで実行するようにcrontabを変更しましたが、エラーは同じです;( –

+0

ああ、あなたは 'rvm'を使っています。https: // rvm.io/integration/cron(rvm wtih cronを使用しています)。これは '1 0 * * * /usr/local/rvm/wrappers/[email protected]/ruby/path/〜/ script.rb' – vielmetti

関連する問題