Rails 3.1ベータプロジェクトをherokuにデプロイするのに問題があります。データベースの移行ステップで問題が発生しました。実行したとき:
heroku rake db:migrate
エラーメッセージが表示されました:
>レーキが中止されました! > JavaScriptランタイムが見つかりませんでした。使用可能なランタイムのリストについては、 > https://github.com/sstephenson/execjs >を参照してください。 >/app/Rakefile:5 >(--traceを使用してタスクを実行すると、完全なトレースが表示されます) >(/ app内)
しかし、アプリケーションをローカルで正常に実行でき、nodejsがインストールされています。なぜだと思いますか?
ここに私の宝石リスト:
abstract (1.0.0)
actionmailer (3.1.0.beta1)
actionpack (3.1.0.beta1, 3.0.7)
activemodel (3.1.0.beta1, 3.0.7)
activerecord (3.1.0.beta1)
activeresource (3.1.0.beta1)
activesupport (3.1.0.beta1, 3.0.7)
ansi (1.2.5)
arel (2.1.0)
bcrypt-Ruby (2.1.4)
builder (3.0.0, 2.1.2)
bundler (1.0.13)
coffee-script (2.2.0)
coffee-script-source (1.1.0)
configuration (1.2.0)
daemon_controller (0.2.6)
erubis (2.7.0, 2.6.6)
execjs (1.0.0, 0.3.3)
fastthread (1.0.7)
heroku (2.1.4)
hike (1.0.0)
i18n (0.6.0beta1, 0.5.0)
jquery-Rails (1.0.1)
json (1.5.1)
json_pure (1.5.1)
launchy (0.4.0)
mail (2.3.0)
mime-types (1.16)
minitest (1.6.0)
multi_json (1.0.1)
mysql (2.8.1)
mysql2 (0.3.2)
oauth (0.4.4)
passenger (3.0.7)
polyglot (0.3.1)
rack (1.3.0.beta, 1.2.2)
rack-cache (1.0.1)
rack-mount (0.7.2, 0.6.14)
rack-ssl (1.3.2)
rack-test (0.6.0, 0.5.7)
Rails (3.1.0.beta1)
railties (3.1.0.beta1)
rake (0.8.7)
rdoc (2.5.8)
rest-client (1.6.1)
rubygems-update (1.8.1)
sass (3.1.1)
simplegeo (0.5.1)
sprockets (2.0.0.beta.2)
sqlite3 (1.3.3)
sqlite3-Ruby (1.3.3)
term-ansicolor (1.0.5)
therubyracer-heroku (0.8.1.pre3)
thor (0.14.6)
tilt (1.3)
treetop (1.4.9)
turn (0.8.2)
tzinfo (0.3.27)
uglifier (0.5.1)
Rails 3.1(herokuにはない))のJavaScriptエンジンが必要です。Herokuで動作するJavaScriptエンジンは herokuのルビラッカー のようです。
Railsはexecjsを使用してJavaScriptを実行し、execjsは7つのJavaScriptエンジンをサポートしています。 Node.jsが1つ、rubyracerが1つです。
Gerred Dillon にも同様の問題があり、それについて書きました。コメントセクションでは、ローカルJavaScriptエンジンとして既にnodejsを使用しているため、これをプロダクションのみの変更にすることについての指摘がありました。したがって、関連するコードは次のとおりです。
group :production do
gem 'therubyracer-heroku', '0.8.1.pre3'
end
UPDATE:Herokuには Cedar という新しいスタックがあり、Rails 3.1.0。(heroku stack
アプリのスタックを確認します。)Herokuには、Rails 3.1.0 rc5へのアップグレードに関する doc もあります。推奨されるのはnotrc5では必要ないため、「therubyracer-heroku」gemを使用しなくなりました。
古いrcからアップグレードする場合は、config/application.rbファイルを更新し、次のコマンドも実行してください。
heroku config:add PATH=vendor/bundle/Ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin:bin
どうやら、これは新しいアプリで設定されていますが、既存のアプリはこのPATHを設定していません。
Rails 3.1ベータ版をherokuにデプロイするために、必ずしもJavaScriptランタイムは必要ありません。
JavaScriptランタイムは、展開時にJavaScriptを縮小する場合(つまり、glifier gemを使用)またはコーヒースクリプトを使用する場合にのみ必要です。
3.1の最終リリースでは、このJavaScriptランタイムの依存関係は存在しないようです。
Javascriptを縮小しなくてもかまわない場合(およびcoffee-scriptを使用していない場合)、(coffee-script、uglifier and execjs gems in the Gemfile and config.assets.js_compressorもコメントアウトしてproduction.rbに入れてください。
この投稿の日付の時点で、まだ指定する必要があります
宝石「therubyracer-heroku」、「0.8.1.pre3」
Rails 3.1アプリをHerokuのCedarプラットフォームに正常にデプロイするために、gemfile内。
NodeアプリをCedarプラットフォームにデプロイすることは可能ですが、Node自体はRailsアプリをデプロイするときにCedarスタックに存在しないため、バンドルする必要があります独自のJavaScriptランタイム。
今のところ。
私はRails側の人々がjsランタイムを持つことへの依存を取り除くために働いていることを知っています http://yehudakatz.com/2011/06/14/what-the- hell-is-happening-to-Rails / そして、HerokuもRails 3.1のデプロイメントを正しく機能させる方法を検討していると確信しています。
私の場合、それはHerokuへのアップロードが成功し、ページにアクセスした後に起こりました。
ActionView::Template::Error (Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
2012-01-09T08:21:19+00:00 app[web.1]: (in /app/app/assets/javascripts/page.js.coffee)):
'heroku config:add PATH blah'を使用してパスを設定しても解決しませんでした。
「レーキアセット:プリコンパイル」はそれを解決しました。
それが私のような誰かを助けることを願っています!