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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

3588閲覧

AWS上でのRailsアプリのプレコンパイルエラー

yukkys

総合スコア42

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2017/07/24 17:03

編集2017/07/25 07:39

###前提・実現したいこと
初のアプリを公開しようと、こちらのページ >>初心者向け:AWS(EC2)にRailsのWebアプリをデプロイする方法 ⑤を見ながら悪戦苦闘しています。ようやく、プレコンパイルというところまで来たのですが、エラーが起きてしまい、解決できないでいます。

プレコンパイルエラーを無視して、unicornの起動、該当urlにアクセスすると、画像非表示、cssの適用なしなので、表示は崩れてしまっていましたが、アクセスは可能でした。

###発生している問題・エラーメッセージ
プレコンパイルエラー

エラーメッセージ

rake aborted! ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (*) JS_Parse_Error.Object.defineProperty.get ((execjs):3538:621) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tasks: TOP => assets:precompile (See full trace by running task with --trace)

###該当のソースコード

bundle exec rake assets:precompile RAILS_ENV=production

###試したこと
一旦unicornを停止させて、再度コマンド入力しましたがダメでした。
Rails 4.2以降: Rails+Unicorn で、publicディレクトリの中身が404になる場合の解決策の中に記載されていたconfig/environments/production.rbのconfig.serve_static_files = true の書き換えも試しましたが、エラー変わらず。
また、ローカルで同アプリに同じコマンドを打つと別のエラーが出ました。

rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer:

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
Rails:4.2.6, AWS_EC2, RDS

jsファイル、jsの使用箇所を追記させて頂きます。
↓application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. // // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // compiled file. // // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // about supported directives. // //= require jquery //= require jquery_ujs //= require turbolinks //= require bootstrap //= require_tree . //= require cocoon

↓index.html.erb 計算結果を表示するjs

<script type="text/javascript"> $(function() { $('#form').submit(function(){ var gender = $('#select-gender').val(); var bw = $('#bw').val(); var used_weight = $('#used_weight').val(); if(gender == "0"){ var a = -216.0475144; var b = 16.2606339; var c = -0.002388645; var d = -0.00113732; var e = 7.01863*(10**-6); var f = -1.291*(10**-8); } else{ var a = 594.31747775582; var b = -27.23842536447; var c = 0.82112226871; var d = -0.00930733913; var e = 4.731582*(10**-5); var f = -9.054*(10**-8); } var fomula = 500 / (a + (b*bw) + (c*(bw**2)) + (d*(bw**3)) + (e*(bw**4)) + (f*(bw**5))); var wilks = fomula*used_weight; var wilks_m = wilks*100; var wilks_round = Math.round(wilks_m)/100; console.log(gender); $('#kekka').text(wilks_round); $('#result-display').show(); return false; }); }); </script>

$ bundle exec rake assets:precompile RAILS_ENV=production --trace の表示結果

** Invoke assets:precompile (first_time) ** Invoke assets:environment (first_time) ** Execute assets:environment ** Invoke environment (first_time) ** Execute environment ** Execute assets:precompile rake aborted! ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (*) JS_Parse_Error.Object.defineProperty.get ((execjs):3538:621) /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:47:in `rescue in block in call' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:44:in `block in call' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:75:in `block in lock' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `Locker' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `lock' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:43:in `call' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/uglifier-3.2.0/lib/uglifier.rb:195:in `run_uglifyjs' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/uglifier-3.2.0/lib/uglifier.rb:157:in `compile' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:53:in `call' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:28:in `call' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in `find_asset' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in `find_all_linked_assets' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:142:in `block in find' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:228:in `block in stat_tree' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:212:in `block in stat_directory' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `each' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `stat_directory' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:227:in `stat_tree' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `each' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `block in logical_paths' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `each' /var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `logical_paths' ~~~~~~~~~~~~文字数制限で以下略~~~~~~~~~~~~~~~~~~~~~~~~

↓ wilks.js削除後のプリコンパイルエラー 見た所、{が合ってないとかはなさそうですが・・・。

rake aborted! Sass::SyntaxError: Invalid CSS after "1215 ": expected "{", was "}" (sass):268

bootstrap.css 1215付近

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

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

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

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

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

k-motoyan

2017/07/25 00:05

Javascriptのコードにエラーがあるという内容のようなので、差し障りないようでしたらJavascriptのコードも載せていただけると回答し易いかと思います。
guest

回答2

0

ベストアンサー

詳細なコードの追記ありがとうございます。

おそらく、javascriptのコードの中でべき乗を計算する時に**を利用していることが原因かと思います。

asset:precompileの中でUglifyというツールが利用されています。
このツールはJavascriptやCSSを圧縮・結合してファイルサイズを小さくしてくれる機能を提供してくれるのですが、
Javascriptのシンタックスの対応バージョンがES2015までとなっています。

今回問題になっている**演算子はES2016の機能となりますので、エラーになっているものと考えられます。
(べき乗の計算にはMath.powを利用するようにすれば良いはずです。)

ただ、一つ気になるのはこのコードがindex.html.erbの中に記載されている?というように読み取れます。

asset:precompileが対象とするのは、[your-app]/assets/javascriptslib/assets/javascriptsvendor/assets/javascriptsだけなのです。

index.html.erbの中に記載されているはasset:precompileの対象外となるはずです。

コードを修正してみてもうまく動作しない場合は以下の点を疑ってみてください。

  • 他にJavascriptのコードがないかどうか?
  • Rails.application.config.assets.pathsにパスが追加されていないかどうか?

投稿2017/07/25 05:45

k-motoyan

総合スコア78

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

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

yukkys

2017/07/25 07:16

ヴァージョン違いでプリコンパイルエラーになる可能性もあるんですね…! おっしゃる通り、計算結果を出力するjs部分はビューファイルに直書きしてあります。 もともとはassets/javascripts/wilks.jsにいれていたのですが、jsに慣れていないためか、動作がうまくいかなかたため止むおえず。 そのまま使用しないwilks.jsが原因なのかと思い、削除して、gitのクローンからやり直して再度プリコンパイルをしたところ、違うエラー文になったため、確かにそのjsファイルが原因だったようです。 ** Invoke assets:precompile (first_time) ** Invoke assets:environment (first_time) ** Execute assets:environment ** Invoke environment (first_time) ** Execute environment ** Execute assets:precompile rake aborted! Sass::SyntaxError: Invalid CSS after "1215 ": expected "{", was "}" (sass):268 cssファイルの1215行目付近ですね。bootstrap.cssのだとは思いますが、ぱっと見問題なさそうなんですが、削除したりして試してみます!ありがとうございました!
yukkys

2017/07/26 12:25

ローカルでも、AWS上でもプリコンパイルできました! Syntax Errorも、application.css、bootstrap.cssを修正することで、プリコンパイルが通りました。 ありがとうございました!
guest

0

以下追加してみてください。

設定値はrake secretで表示された値を設定してください。

vim {rails_root}/config/initializers/devise.rb ------------------------------------------------------- Devise.setup do |config| ... config.secret_key = '**********************' ... end

投稿2017/07/25 01:32

moonphase

総合スコア6621

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

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

yukkys

2017/07/25 02:09

返信ありがとうございます。該当箇所のsecret_keyがコメントアウトされていたので、解除してsecret_keyを新しいものに入れ直しましたが、改善されませんでした。
moonphase

2017/07/25 03:13

--traceを付けてみてもらえますか。その結果を質問に追記お願いします。
yukkys

2017/07/25 04:53

assets:precompile, assets:environment の実行をしていて、enbironmentは問題なく実行できたが、precompileは出来なかったみたいな意味でしょうか。文字数制限で全ては貼れなかったため、入る範囲で追記しました。
moonphase

2017/07/25 05:35

一点確認したいのですが、今回AWSで公開したいとの事ですが、ローカルではプリコンパイルはうまく行ってるのでしょうか?
yukkys

2017/07/25 07:48

最初にエラーが出た時に、ローカルでもプリコンパイルをしてみようという記事があったので、やってみたところ、deviseのsecret_key部分のエラーが出ました。そこで、ローカルでもaws上でもsecret_keyをそれぞれいれて、再度プリコンパイルしてもエラー文変わりませんでした。 そこで、k-motoyanさんのおっしゃっていたjsファイルの部分を削除し、再度gitのクローンからやり直して、プリコンパイルをしたところ、エラー文の変更がありました。この部分は質問文に追記しておきました。css部分の{ の数だと思うので、先ほどよりかは問題は浅くなったのかなと思っています。ぱっと見1215あたりでは見つからないのですが、周辺で探してみます!ありがとうございました!
yukkys

2017/07/26 12:27

ローカルでも、AWS上でもプリコンパイルできました! Syntax Errorも、application.css、bootstrap.cssを修正することで、プリコンパイルが通りました。 ありがとうございました! ローカルでもプリコンパイルできることを初めて知りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問