konchanxxx / menta

MENTAのタスク管理用リポジトリ
0 stars 0 forks source link

Rails6のengineプロジェクトにwebpacker導入にあたってのエラー #61

Closed creamstew closed 5 years ago

creamstew commented 5 years ago

概要

Rails6のengineプロジェクトにwebpacker導入を試みているが、上手く導入できない。

実現したいこと

Rails6のengineプロジェクトにwebpackerを導入すること。

困っていること

Rails6からWebpackerが標準でJavaScriptを処理するようになったので、engineにもwebpackerを導入したかった。 しかし調べてみると、engineにはまだwebpackerがサポートされていなかった。 https://github.com/rails/webpacker/issues/348

下記のドキュメントとサンプルコードに習って、ファイルを手動で入れてみるがサーバーを立ち上げる際にエラーが出てしまう。 https://github.com/rails/webpacker/blob/master/docs/engines.md https://github.com/ghaydarov/webpacker-with-engines

またwebpacker自体に今まで馴染みがなかったため、エラー解消の検討がついていません。

困っていることがバグの場合は事象やログ、エラーメッセージをできるだけそのまま(抜粋などしない)下記に記載してください。

=> Booting WEBrick
=> Rails 6.0.0.beta3 application starting in development http://localhost:3000
=> Run `rails server --help` for more startup options
RAILS_ENV=development environment is not defined in config/webpacker.yml, falling back to production environment
RAILS_ENV=development environment is not defined in config/webpacker.yml, falling back to production environment
Exiting
Traceback (most recent call last):
        52: from bin/rails:4:in `<main>'
        51: from bin/rails:4:in `require'
        50: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands.rb:18:in `<top (required)>'
        49: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/command.rb:46:in `invoke'
        48: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/command/base.rb:65:in `perform'
        47: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
        46: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
        45: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
        44: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:136:in `perform'
        43: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:136:in `tap'
        42: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:145:in `block in perform'
        41: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:36:in `start'
        40: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
        39: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/server.rb:354:in `wrapped_app'
        38: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/server.rb:219:in `app'
        37: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/server.rb:319:in `build_app_and_options_from_config'
        36: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:40:in `parse_file'
        35: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:49:in `new_from_string'
        34: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:49:in `eval'
        33: from config.ru:in `<main>'
        32: from config.ru:in `new'
        31: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `initialize'
        30: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `instance_eval'
        29: from config.ru:3:in `block in <main>'
        28: from config.ru:3:in `require_relative'
        27: from /Users/umetsukazuma/workspace/blog_engine/spec/dummy_app/config/environment.rb:5:in `<top (required)>'
        26: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/application.rb:362:in `initialize!'
        25: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:60:in `run_initializers'
        24: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
        23: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
        22: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
        21: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `call'
        20: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `each'
        19: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
        18: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
        17: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
        16: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
        15: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:61:in `block in run_initializers'
        14: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:32:in `run'
        13: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:32:in `instance_exec'
        12: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/railtie.rb:84:in `block in <class:Engine>'
        11: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker.rb:27:in `bootstrap'
        10: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/commands.rb:14:in `bootstrap'
         9: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/manifest.rb:18:in `refresh'
         8: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/manifest.rb:83:in `load'
         7: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:47:in `public_manifest_path'
         6: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:43:in `public_output_path'
         5: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:39:in `public_path'
         4: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:80:in `fetch'
         3: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:84:in `data'
         2: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:88:in `load'
         1: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:88:in `read'
/Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:88:in `read': No such file or directory @ rb_sysopen - /Users/umetsukazuma/workspace/blog_engine/spec/dummy_app/config/webpacker.yml (Errno::ENOENT)
        51: from bin/rails:4:in `<main>'
        50: from bin/rails:4:in `require'
        49: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands.rb:18:in `<top (required)>'
        48: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/command.rb:46:in `invoke'
        47: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/command/base.rb:65:in `perform'
        46: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
        45: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
        44: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
        43: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:136:in `perform'
        42: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:136:in `tap'
        41: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:145:in `block in perform'
        40: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:36:in `start'
        39: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
        38: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/server.rb:354:in `wrapped_app'
        37: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/server.rb:219:in `app'
        36: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/server.rb:319:in `build_app_and_options_from_config'
        35: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:40:in `parse_file'
        34: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:49:in `new_from_string'
        33: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:49:in `eval'
        32: from config.ru:in `<main>'
        31: from config.ru:in `new'
        30: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `initialize'
        29: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `instance_eval'
        28: from config.ru:3:in `block in <main>'
        27: from config.ru:3:in `require_relative'
        26: from /Users/umetsukazuma/workspace/blog_engine/spec/dummy_app/config/environment.rb:5:in `<top (required)>'
        25: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/application.rb:362:in `initialize!'
        24: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:60:in `run_initializers'
        23: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:205:in `tsort_each'
        22: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:226:in `tsort_each'
        21: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `each_strongly_connected_component'
        20: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `call'
        19: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:347:in `each'
        18: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:349:in `block in each_strongly_connected_component'
        17: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:431:in `each_strongly_connected_component_from'
        16: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
        15: from /Users/umetsukazuma/.rbenv/versions/2.6.1/lib/ruby/2.6.0/tsort.rb:228:in `block in tsort_each'
        14: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:61:in `block in run_initializers'
        13: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:32:in `run'
        12: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.beta3/lib/rails/initializable.rb:32:in `instance_exec'
        11: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/railtie.rb:84:in `block in <class:Engine>'
        10: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker.rb:27:in `bootstrap'
         9: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/commands.rb:14:in `bootstrap'
         8: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/manifest.rb:18:in `refresh'
         7: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/manifest.rb:83:in `load'
         6: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:47:in `public_manifest_path'
         5: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:43:in `public_output_path'
         4: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:39:in `public_path'
         3: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:80:in `fetch'
         2: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:84:in `data'
         1: from /Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:87:in `load'
/Users/umetsukazuma/workspace/blog_engine/vendor/bundle/ruby/2.6.0/bundler/gems/webpacker-90df6f551eb9/lib/webpacker/configuration.rb:91:in `rescue in load': Webpacker configuration file not found /Users/umetsukazuma/workspace/blog_engine/spec/dummy_app/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /Users/umetsukazuma/workspace/blog_engine/spec/dummy_app/config/webpacker.yml (RuntimeError)

解決するために行ったこと

下記のドキュメントとサンプルプロジェクトを見ながらファイルを作成。 https://github.com/rails/webpacker/blob/master/docs/engines.md https://github.com/ghaydarov/webpacker-with-engines

問題となっている箇所の予想

dummy_app/config/webpacker.ymlのファイルを探しているため、エラーとなっている。 config/webpacker.ymlのファイルを探させることができれば、解消できるのではないか。

問題となっているアプリケーションのGitHub URL

https://github.com/creamstew/rails6-engine-webpacker

konchanxxx commented 5 years ago

おお、rails6系まだ触ったことないので調べますね:bow: 少々お時間ください:bow:

それっぽい記事は見つけました https://www.srockstyle.com/develop/3641/

konchanxxx commented 5 years ago

なんかrails appの中にもう一つアプリ作ってますね https://github.com/creamstew/rails6-engine-webpacker/tree/master/spec/dummy_app

konchanxxx commented 5 years ago

アプリケーションディレクトリがなぜかそいつを見にいくように設定されている https://github.com/creamstew/rails6-engine-webpacker/blob/master/bin/rails#L7

konchanxxx commented 5 years ago

specディレクトリはtestとか入れるところなのでこういうことはしないと思います:bow:

konchanxxx commented 5 years ago

rails6-engine-webpacker/spec/dummy_app/config/webpacker.yml

に下記を定義したファイルを追加したら動きましたmm

default: &default
  # ...
  # public_root_path could be used to override the path to `public/` folder
  # (relative to the engine root)
  public_root_path: ../public
  # use a different sub-folder name
  public_output_path: my-engine-packs

development:
  <<: *default
konchanxxx commented 5 years ago

あと気になったのはvendorディレクトリをcommitしているのですが通常gemなどはコミットしないと思います:bow: 容量もでかくなってしまいますmm https://qiita.com/sekizo/items/3b4e90145461f1e38db4#vendorbundle

konchanxxx commented 5 years ago

@creamstew 回答しました:bow:

creamstew commented 5 years ago

なんかrails appの中にもう一つアプリ作ってますね https://github.com/creamstew/rails6-engine-webpacker/tree/master/spec/dummy_app

こちらは、Mountableエンジンを作成しています。 https://qiita.com/kaorina/items/2272a9a6158e0e8cb22d

creamstew commented 5 years ago

また、追加でご質問させてください!

概要

その後、下記の記事に習ってScaffoldを実行し、今度はjquery, jquery_ujs を呼び出す記述を追加し、javascriptで処理を出来るようにしたい。 https://qiita.com/kaorina/items/2272a9a6158e0e8cb22d

実現したいこと

jquery, jquery_ujs を呼び出す記述を追加し、javascriptで処理を出来るようにしたい。

困っていること

rails5まではassets/javascripts以下のapplication.jsに追記すれば良かったが、rails6およびwebpackerではどのファイルに記載すれば良いかの検討がついていない。

よろしくお願いいたします。

konchanxxx commented 5 years ago

こちらは、Mountableエンジンを作成しています。

app in app みたことはあったのですが、このRails Appでやる必要がないかなと思ったのとその前情報がなかったので共有しておいて頂きたかったです:bow: 一つ一つ読み解いていかないといけないのでmm 通常疎結合なアプリケーションを作りたいならマイクロサービスアーキテクチャを適用するとかが一般的なので記事のapp in appのプラグインは応急処置感ありますね🤔

konchanxxx commented 5 years ago

また、追加でご質問させてください!

すいません。タスク管理の観点から一つ一つ質問はcloseしたいので別issueで起票をお願いしたいです:bow: お手数おかけしますが宜しくお願い致します:bow: