質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

4748閲覧

ターミナルだと動くけど、cronだと動かない(coreserverリニューアルで)

takataka75

総合スコア95

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/10/19 08:18

編集2017/10/23 04:13

レンタルサーバー(coreserver)の更新で環境が変わって、
今まで動いていたrubyが動かなくなりました。

エラー内容は

sh

1/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kern 2el_require.rb:55:in `require': cannot load such file -- nokogiri (LoadError)

rubyのgem(nokogiri)が読めていないのが原因はわかるのですが、
対処がわかりません。

crontab

1 230 4 * * * /bin/sh /virtual/XXXXX/public_html/data/cron_yyyy.sh 3

でシェル内でgemをインストールしている所を環境変数に入れています。

sh

1 2#/bin/sh 3export GEM_HOME=/virtual/XXXXX/public_html/ruby/ 4 5cd /プログラムのあるディレクトリ/ 6 7/usr/local/bin/ruby zzzzz.rb 8

ターミナルならきちんと動き、
更新前はこの記述で問題なく動いていましたので、
わけがわからなくなりました。

envを追加します。
(見ても、違いがないように見える)

新しい方

sh

1XDG_SESSION_ID=c37270 2GEM_HOME=/virtual/username/public_html/ruby/ 3SHELL=/bin/sh 4USER=username 5PATH=/usr/bin:/bin 6PWD=/virtual/username/public_html/xxxxx/ 7SHLVL=3 8HOME=/virtual/username 9LOGNAME=username 10XDG_RUNTIME_DIR=/run/user/10040 11_=/usr/bin/env 12

まだ動いている
古い(まだリニューアルしていない)別のサーバー

sh

1GEM_HOME=/virtual/username/public_html/ruby/ 2SHELL=/bin/sh 3USER=username 4PATH=/usr/bin:/bin 5PWD=/virtual/username 6HOME=/virtual/username 7SHLVL=2 8LOGNAME=username 9_=/usr/bin/env

gemはGEM_HOMEでユーザー領域にインストールしています。
rubyの使うパス関係の環境変数あたりで、
細かく設定してあげればいけそうか気がするのですが、
何がそれにあたるのか知識不足のため、
困っています。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scsi

2017/10/19 14:36

その上京なら自分ならcronとterminalでの実行時のenvの結果を比較するかな
takataka75

2017/10/20 06:48

レンサバなので前環境は無いですが、まだリニューアルしていないサーバーで動かしているruby(cronでも動いている)がありましたので、そちらのenvを取って見ました。よろしくお願いします。
scsi

2017/10/20 10:06

env は cron で実行するshell スクリプト内に記述した env の結果ですか??それであれば違いがないので別の原因ですかね~
kenchankunsan

2017/10/21 09:50

cronでexport GEM_HOME=/virtual/XXXXX/public_html/ruby/したとに、"gem env"コマンドを実行したときの結果はどうでしょう?
guest

回答1

0

自己解決

たまたま見つけたサイトで、解法を見つけました。

rubyのバージョンは私の場合といくつか違っていましたが、
一発で解決

参考にしたサイト
rvmの環境でのRubyスクリプトのcron実行
http://mechsys.tec.u-ryukyu.ac.jp/~oshiro/SiteList/2015/04/23/2934

sh

1rvm cron setup 2

をすると、
crontabの頭に↓のように色々追記されて動くようになりました。

sh

1 2#sm start rvm 3PATH="なんちゃらかんちゃら" 4GEM_HOME='/usr/local/rvm/gems/ruby-2.2.1' 5GEM_PATH='/usr/local/rvm/gems/ruby-2.2.1:/usr/local/rvm/gems/ruby-2.2.1@global' 6MY_RUBY_HOME='/usr/local/rvm/rubies/ruby-2.2.1' 7IRBRC='/usr/local/rvm/rubies/ruby-2.2.1/.irbrc' 8RUBY_VERSION='ruby-2.2.1' 9#sm end rvm 10

投稿2017/10/23 04:20

takataka75

総合スコア95

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問