1

私は苦労しています。Rails 5 - JSがプロダクション環境で動作しない(のみ)

私のアプリ/ assets/javascriptsフォルダに一連のjsファイルを含む5つのアプリがあります。これらのファイルのjsは開発環境でうまく動作しますが、私がherokuで公開すると動作が停止します。

クロムインスペクタから、ネットワークタブから表示されているapplication.jsファイルに、自分のアプリでjsファイルの内容が表示されていることがわかります。それだけでは、生産上何もしていないようです。クロムコンソールのinpsectorからのコンソールエラーは表示されません。

私はthis postから、試してみるべきことがあることがわかります。私はそれらのすべてを試しました。私は完全に新しいアプリを作って、一度にjsファイルを追加して、何かが別のもの(他の何かとは違う順序)で必要となるような変化点があるかどうかを見極める - しかし、それは問題を解決するものではない。

私は1つの提案をしていることをthis articleから見ることができます。その後、

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

と試してみてください。

rake assets:clean assets:precompile 

私はこれらの提案のそれぞれを試しても問題を見つけることができません。

jsの記述方法にエラーがあった場合は、開発環境と本番環境のコンソールインスペクタの両方でchromeで公開されることが予想されます。どちらの環境でもエラーは表示されません。

jsファイルを読んでいるプロダクション環境に問題があった場合、なぜネットワークタブから開くことができるファイル内のjsファイルで使用されている単語を単語検索できるのか混乱していますテキスト。

この問題を解決するにはどうすればよいですか?

私の関連ファイルは、次のとおりです。

アプリ/資産/ JavaScriptの/

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require jquery-fileupload/vendor/jquery.ui.widget 
//= require jquery-fileupload/jquery.iframe-transport 
//= require jquery-fileupload/jquery.fileupload 
//= require bootstrap-sprockets 
//= require moment 
//= require bootstrap-datetimepicker 
//= require pickers 
// require underscore 
// require gmaps/google 
//= require markerclusterer 
//= require cocoon 
//= require cable 
//= require_tree . 

設定/初期化子/ assets.rb

# Be sure to restart your server when you modify this file. 
# Version of your assets, change this if you want to expire all your assets. 
Rails.application.config.assets.version = '1.0' 

# Add additional assets to the asset load path 
# Rails.application.config.assets.paths << Emoji.images_path 

# Precompile additional assets. 
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 
# Rails.application.config.assets.precompile += %w(search.js) 

のconfig/production.rb

をapplication.js
# Do not fallback to assets pipeline if a precompiled asset is missed. 
    config.assets.compile = false 

プロダクション環境で動作していない関連ファイルは、app/assets/javscripts/stance/commercial.jsに保存されています(application.jsで// = require_treeによって識別される必要があります)。ファイルを持っていることを

jQuery(document).ready(function() { 
    jQuery('[name="organisation[commercial_attributes][standard_financial_split]"]').on('click', function() { 
     if (jQuery(this).val() == 'true') { 
      jQuery('#commercial_standard_financial_split_content').removeClass('hidden'); 
     } else { 
      jQuery('#commercial_standard_financial_split_content').removeClass('hidden').addClass('hidden'); 
     } 
    }); 

}); 

は、誰もがJSは、本番環境で動作するように取得するためのプロセスを支援することはできますか?

私は試してみたいことがありますが、これはチュートリアル、コードスクール(私はコードスクールの学生、レール、udemy、百万本を持っています)のようなものではありません。この問題を解決するための基準点を見つけることはできません。

+0

まったく突き刺しましたか?この質問はこのサイトで多くの回答がありました。また、問題に関するHerokuのドキュメントは次のとおりです:https://devcenter.heroku.com/articles/rails-4-asset-pipeline私はいつも12ファクターの宝石を含んでいます。 – steel

+0

こんにちは@steel。はい - 私は何年も努力してきました。私はリンクされたSOの投稿と、リンクされたブログ投稿のすべての事柄について概説しました。 Herokuのドキュメントは、レール3と4に話しています。私はRails 5を使用しています。これは、ファイル構成でconfigの一部であるRails config(assets.rb)から見ることができるため、特定のプリコンパイルコマンドを実行していません。私はコンソールログから、私がherokuにプッシュするとアセットがあらかじめコンパイルされていることも分かります:Railsアセットパイプラインの準備 リモート:実行中:rakeアセット:プリコンパイル リモート:アセットのプリコンパイルが完了しました(3.51s) – Mel

+0

ありがとう12因子の宝石への参照のためにも。私はレール4を使用していたときにこの問題を解決しようとしていましたが、レール5の部分ではなくなりました。 – Mel

答えて

0

私の場合、解決策は、javascriptインクルードタグを自分のapplication.html.erbのヘッダーから本体の下まで削除することでした。私の質問で参考にしたjsファイルの問題が修正されました。

しかし、これは私のGoogleマップのjavascriptを壊してしまったので、これは実際には良い解決策であるかどうかはわかりません。

関連する問題