Mongoid/Devise Rails 3.1テンプレート (MongoidおよびDevise)を使用しようとしています。 ExecJS というJavaScriptランタイムが見つからないというエラーが表示され続けます。私は何もインストールしていないときには十分に公平ですが、私は Node.js 、 Mustang 、および Ruby Racer をインストールしようとしましたが、何も動作しません。
JavaScriptランタイムが見つかりませんでした。利用可能なランタイムの一覧については sstephenson/ExecJS (GitHub)を参照してください(ExecJS::RuntimeUnavailable
)。
これを機能させるために何をする必要がありますか?
私はUbuntu 11.04を使っていて、同様の問題がありました。 Node.jsのインストール それを修正しました。
Ubuntu 13.04 x 64以降、実行する必要があるのは以下のとおりです。
Sudo apt-get install nodejs
これで問題は解決します。
Sudo yum install nodejs
Gemファイルに ExecJS と Ruby Racer を追加して、bundle install
を実行してください。
gem 'execjs'
gem 'therubyracer'
あとはすべてうまくいくはずです。
Gemファイルに次のように書きます。
gem 'execjs'
gem 'therubyracer'
そして走る
bundle install
私にはすべてうまくいく:)
私は同様の問題を抱えていました:私のRails 3.1アプリはWindows上ではうまく動きましたが、Linux上で走っているときにOPと同じエラーを得ました。両方のプラットフォームで私のために働いた修正は私のGemfile
に以下を追加することでした:
gem 'therubyracer', :platforms => :Ruby
トリックは:platforms => :Ruby
が実際にがこの宝石を「C Ruby(MRI)またはRubiniusと一緒に、しかしWindowsは使わないで」使うことを意味することを知っています。
:platforms
の他の可能な値は bundler
のmanページ に記述されています。
参考:Windowsにはexecjs
が見つけられる組み込みのJavaScriptエンジンがあります。 Linuxには組み込みのものはありませんが、インストールできるものはいくつかあります。 therubyracer
はそのうちの1つです。他のものはexecjs
README.md にリストされています。
私のGemfileに次のgemを追加することで問題は解決しました。
gem 'therubyracer'
それからあなたの新しい依存関係をまとめてください:
$ bundle install
別の方法はあなたが持っていないものを含むgemグループなしで単にバンドルすることです。
そうします:
bundle install --without assets
gemfileを変更する必要はまったくありません。もちろん、あなたがアセットチェーンのことをしていないのであれば - それは通常開発環境ではない場合に当てはまります。 Bundleはあなたの '--without'設定を.bundle/configファイルに記憶します。
Gemファイルに以下のgemを追加してください
gem 'therubyracer'
gem 'execjs'
そして走る
bundle install
これで終わりです:)
私は Ruby Racer をGemファイルに追加して修正していました。しかしねえ、 Node.js は動作します。
Amazon linux(AMI)の場合:
Sudo yum install nodejs npm --enablerepo=epel
これと同じエラーが発生しましたが、運用環境ではなくステージングサーバーでのみ発生しました。 nodejsは両方の環境にすでにインストールされています。
次のように入力してください。
which node
Nodeコマンドはプロダクション環境では/ usr/bin/nodeに、ステージング環境では/ usr/local/bin/nodeにあることがわかりました。
ステージングに関するシンボリックリンクを作成した後
Sudo ln -s /usr/local/bin/node /usr/bin/node
その後、アプリケーションはステージングで機能しました。
大したことはありません。
RubyRacerはメモリ不足のため使用しないでください。ここで何人かの人々によって提案されているようにNode.jsをインストールすることはより良い考えです。
ExecJsライブラリで使用できる利用可能なランタイムのリストには、Node.jsの使用方法も記載されています。
https://github.com/sstephenson/execjs
したがって、Node.jsはやり過ぎではなく、RubyRacerを使用するよりもはるかに優れたソリューションです。
参考までに、これは私のための問題を修正しました...それはパスの問題です: http://forums.freebsd.org/showthread.php?t=35539
Ubuntu 18.04、Ruby 2.6。*、Rails 5、&RubyMine 2019.1.1を使ってRubyMineでデバッグしようとしています、私は同じ問題に遭遇しました。
この問題を解決するために、私はGemfile
からmini_racer
行のコメントを外してからbundle
を実行しました。
# See https://github.com/Rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :Ruby
への変更:
# See https://github.com/Rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :Ruby
私のシステムのRubyが1.8.7である私がRuby 1.9.3でrbenvを使い始めたとき、私はこの問題を始めました。 gemは両方の場所にインストールされていますが、何らかの理由でRailsスクリプトがそれを拾いませんでした。しかし、Gemfileに "execjs"と "therubyracer"を追加するとうまくいきます。
あなたのgemファイルの中でこの行のコメントを外してください。
19#gem 'therubyracer'、プラットフォーム::Ruby
そしてバンドルインストールを実行します
あなたは働く準備ができています。 :)