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

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

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

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Ruby

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

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Q&A

解決済

2回答

1060閲覧

coreserverでcronで呼び出したrubyが動かなくなった。(コンソール上は動く)

takataka75

総合スコア95

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Ruby

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

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

0グッド

0クリップ

投稿2022/11/13 06:10

前提

coreserver上で動かしていたrubyのスクリプトを
半年ほど放置していたら、
いつの間にか動かなくなっていました。

発生している問題・エラーメッセージ

Ignoring bigdecimal-3.1.2 because its extensions are not built. Try: gem pristine bigdecimal --version 3.1.2 Ignoring bigdecimal-1.3.2 because its extensions are not built. Try: gem pristine bigdecimal --version 1.3.2 Ignoring bindex-0.8.1 because its extensions are not built. Try: gem pristine bindex --version 0.8.1 Ignoring bindex-0.7.0 because its extensions are not built. Try: gem pristine bindex --version 0.7.0 Ignoring bootsnap-1.13.0 because its extensions are not built. Try: gem pristine bootsnap --version 1.13.0 Ignoring bootsnap-1.4.4 because its extensions are not built. Try: gem pristine bootsnap --version 1.4.4 Ignoring byebug-11.1.3 because its extensions are not built. Try: gem pristine byebug --version 11.1.3 Ignoring byebug-11.0.1 because its extensions are not built. Try: gem pristine byebug --version 11.0.1 Ignoring cgi-0.3.3 because its extensions are not built. Try: gem pristine cgi --version 0.3.3 Ignoring childprocess-1.0.1 because its extensions are not built. Try: gem pristine childprocess --version 1.0.1 Ignoring date-3.2.2 because its extensions are not built. Try: gem pristine date --version 3.2.2 Ignoring debug-1.6.3 because its extensions are not built. Try: gem pristine debug --version 1.6.3 Ignoring digest-3.1.0 because its extensions are not built. Try: gem pristine digest --version 3.1.0 Ignoring etc-1.3.0 because its extensions are not built. Try: gem pristine etc --version 1.3.0 Ignoring fcntl-1.0.1 because its extensions are not built. Try: gem pristine fcntl --version 1.0.1 Ignoring ffi-1.15.5 because its extensions are not built. Try: gem pristine ffi --version 1.15.5 Ignoring ffi-1.10.0 because its extensions are not built. Try: gem pristine ffi --version 1.10.0 Ignoring ffi-1.9.10 because its extensions are not built. Try: gem pristine ffi --version 1.9.10 Ignoring fiddle-1.1.0 because its extensions are not built. Try: gem pristine fiddle --version 1.1.0 Ignoring http-parser-1.2.3 because its extensions are not built. Try: gem pristine http-parser --version 1.2.3 Ignoring http-parser-1.0.5 because its extensions are not built. Try: gem pristine http-parser --version 1.0.5 Ignoring http_parser.rb-0.8.0 because its extensions are not built. Try: gem pristine http_parser.rb --version 0.8.0 Ignoring http_parser.rb-0.6.0 because its extensions are not built. Try: gem pristine http_parser.rb --version 0.6.0 Ignoring io-console-0.5.11 because its extensions are not built. Try: gem pristine io-console --version 0.5.11 Ignoring io-wait-0.2.3 because its extensions are not built. Try: gem pristine io-wait --version 0.2.3 Ignoring json-2.6.2 because its extensions are not built. Try: gem pristine json --version 2.6.2 Ignoring llhttp-ffi-0.4.0 because its extensions are not built. Try: gem pristine llhttp-ffi --version 0.4.0 Ignoring mimemagic-0.4.3 because its extensions are not built. Try: gem pristine mimemagic --version 0.4.3 Ignoring msgpack-1.6.0 because its extensions are not built. Try: gem pristine msgpack --version 1.6.0 Ignoring msgpack-1.2.10 because its extensions are not built. Try: gem pristine msgpack --version 1.2.10 Ignoring nio4r-2.3.1 because its extensions are not built. Try: gem pristine nio4r --version 2.3.1 Ignoring nio4r-2.1.0 because its extensions are not built. Try: gem pristine nio4r --version 2.1.0 Ignoring nokogiri-1.10.3 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.3 Ignoring nokogiri-1.8.5 because its extensions are not built. Try: gem pristine nokogiri --version 1.8.5 Ignoring nokogiri-1.6.7.2 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.7.2 Ignoring nokogiri-1.6.7.1 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.7.1 Ignoring puma-3.12.1 because its extensions are not built. Try: gem pristine puma --version 3.12.1 Ignoring racc-1.5.2 because its extensions are not built. Try: gem pristine racc --version 1.5.2 Ignoring sqlite3-1.4.1 because its extensions are not built. Try: gem pristine sqlite3 --version 1.4.1 Ignoring unf_ext-0.0.7.2 because its extensions are not built. Try: gem pristine unf_ext --version 0.0.7.2 Ignoring unf_ext-0.0.7.1 because its extensions are not built. Try: gem pristine unf_ext --version 0.0.7.1 Ignoring websocket-driver-0.7.0 because its extensions are not built. Try: gem pristine websocket-driver --version 0.7.0 ruby: warning: shebang line ending with \r may cause problems /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:122:in `require': incompatible library version - /virtual/falert/public_html/ruby/gems/date-3.2.2/lib/date_core.so (LoadError) from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:122:in `require' from /virtual/falert/public_html/ruby/gems/date-3.2.2/lib/date.rb:4:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:122:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:122:in `require' from /virtual/falert/public_html/ruby/gems/xmlrpc-0.3.2/lib/xmlrpc/parser.rb:8:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:70:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:70:in `require' from /virtual/falert/public_html/ruby/gems/xmlrpc-0.3.2/lib/xmlrpc/client.rb:10:in `<top (required)>' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:135:in `require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:135:in `rescue in require' from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:39:in `require' from プログラム.rb:5:in `<main>'

試したこと

Twitterのgem(の参照)が足りなくなった?らしいので、
gem update
gem install ffi
などをやってみましたが、動かず
(コンソールからcronシェルを叩いてrubyを動かすと
問題なく動くのでソース内が問題ではないのは確認済み)

よろしくお願いします。

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

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

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

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

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

winterboum

2022/11/13 07:11

ruby: warning: shebang line ending with \r may cause problems これ対応してみてもだめですか?
takataka75

2022/11/13 07:27

ダメですね。このワーニングだけは消えましたが、動かないです
guest

回答2

0

ベストアンサー

ログインしてコマンドラインで入力して実行するとOKだが、cronで実行するとNGというのは以下の1つ以上が原因です。
・実行ユーザーが違う(これはさすがに誰でも気づく)
・環境変数が違う(ほとんどがこれ)
・カレントディレクトリが違う(時々これがある)
・umaskが違う(これの影響はまず無い)
・標準入力・標準出力・標準エラー出力が端末でない(これはあまり無い)

crontabに、
* * * * * env | sort >/tmp/cronenv.txt
と書いて、端末でenv|sortしたものと比較してみましょう。
影響してそうな物があれば、crontabに、

crontab

1PATH=~~~~~~ 2RUBYxxx=~~~~ 30 1 * * * /path/to/ruby /path/to/rubyscript.rb

のように実行したい行の上に追記します(crontabの中ではPATH=$HOME/bin:$PATHのような環境変数参照は出来ないので全部展開して書く)。

投稿2022/11/13 10:46

otn

総合スコア84489

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

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

takataka75

2022/11/14 02:03

ありがとうございます。 出力させてみると、 cornでの方は PATHが/user/bin/しか通っていませんでした。 コンソールの場合は /user/local/bin/が通っていて、そちらのrubyを使っていることを確認 なので、 暫定的に シェルの先頭付近に export PATH="/user/local/bin:$PATH" を追加したらきちんと動くようになりました。 corntabの中に記入でもできそうですが、 後で試してみます。
guest

0

cron に書かれた code の実行はできるが、cron ではできない、
という場合でよくあるのは、実行環境の違いです。
cron の実行はどのアカウントで行われていますか。
cronからの実行はloginしてからの実行と異なり .bashrc などが取り込まれないので、そこで定義された環境変数などは定義されない状態です。
環境変数が足りない・異なっている とか PATH が違ってるとか ないですか

投稿2022/11/13 08:14

winterboum

総合スコア23324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問