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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Yarn

Yarnは、Facebook/Exponent/Google/Tildeが開発したJavaScriptのパッケージマネージャ。npmよりもインストールが速く、厳密にモジュールのバージョンを固定できるなど、npmの問題を解決。npmと互換性があり、同じpackage.jsonを使用できます。

Ruby on Rails 6

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

0回答

1366閲覧

【Rails】app/javascript/srcディレクトリのファイルをアセットパイプラインに編入する方法

arslonga

総合スコア0

Yarn

Yarnは、Facebook/Exponent/Google/Tildeが開発したJavaScriptのパッケージマネージャ。npmよりもインストールが速く、厳密にモジュールのバージョンを固定できるなど、npmの問題を解決。npmと互換性があり、同じpackage.jsonを使用できます。

Ruby on Rails 6

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/01/13 01:52

編集2021/01/13 02:00

前提・実現したいこと

Railsの本番環境でCSSを反映させたい。

Railsで作成したアプリにYarn経由でBootstrapを導入しapp/javascript/src/application.scssapp/javascript/packs/application.jsimportすることでCSSを当てていますが本番環境下では反映されず困っています。

原因はapp/javascript/packsapp/javascript/srcディレクトリのファイルはアセットパイプラインのプリコンパイルの対象に入らないからだと考え、config/initializers/assets.rbにその二つのパスを追加しデプロイをしましたが、
うまく反映されたのはJavascriptファイルのapp/javascript/packs/application.jsのみで、相変わらずCSSファイルのapp/javascript/src/application.scssは反映されず、もう何日も原因が分からないままで困っています。

どうかご指導のほどよろしくお願いします。

ツールのバージョン

MacOS Catalina 10.15.7
Amazon Linux2
Rails 6.0.3.3
Ruby 2.6.5
Bootstrap 4.5.0
Yarn 1.22.10
rails/webpacker 4.3.0
Capistrano 3.15.0
nginx 1.18.0

該当のソースコード

  • config/initializers/assets.rb

ruby

1 2Rails.application.config.assets.paths << Rails.root.join('node_modules') 3Rails.application.config.assets.paths << Rails.root.join('app','javascript','packs') 4Rails.application.config.assets.paths << Rails.root.join('app','javascript','src')
  • app/javascript/src/application.scss

scss

1@import '~bootstrap/scss/bootstrap'; 2@import '~@fortawesome/fontawesome-free/scss/fontawesome';
  • app/javascript/packs/application.js

Javascript

1require("@rails/ujs").start() 2require("turbolinks").start() 3require("@rails/activestorage").start() 4require("channels") 5 6import 'bootstrap' 7import '@fortawesome/fontawesome-free/js/all' 8import '../src/application.scss'
  • app/views/layouts/application.html.erb
<!DOCTYPE html> <html> <head> <title>Myapp</title> <meta name="description" content="This site is under construction..."> <meta name="robots" content="noidex,nofollow"> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <link rel="prefetch" href="<%= asset_pack_path 'application.css' %>" /> <%= yield %> </body> </html>
  • config/environments/production.rb

ruby

1 # Disable serving static files from the `/public` folder by default since 2 # Apache or NGINX already handles this. 3 config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? 4 # =>false 5 6 # Compress CSS using a preprocessor. 7 config.assets.css_compressor = :sass 8 # Do not fallback to assets pipeline if a precompiled asset is missed. 9 config.assets.compile = true

↓Ngnix(webサーバーの設定を一応載せます)

  • /etc/nginx/nginx.conf
user nobody; worker_processes 1; error_log /var/log/nginx/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; include /usr/log/nginx/modules/*.conf; pid run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 0; keepalive_timeout 65; types_hash_max_size 4096; include /usr/log/nginx/conf.d/*.conf; #gzip on; server { include /etc/nginx/default.d/*.conf; #listen 80; #server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / { # index index.html index.htm; # root html; } error_page 404 /404.html; locaton = /40x.html { } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { # root html; } }

試したこと

これでアセットパイプライン上に編入されたはずです。

Terminal

1irb(main):001:0> Rails.application.config.assets.paths 2=> ["/Users/a01/projects/myapp/app/assets/config", 3"/Users/a01/projects/myapp/app/assets/images", 4"/Users/a01/projects/myapp/app/assets/stylesheets", 5"/Users/a01/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actioncable-6.0.3.3/app/assets/javascripts", 6"/Users/a01/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activestorage-6.0.3.3/app/assets/javascripts", 7"/Users/a01/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/actionview-6.0.3.3/lib/assets/compiled", 8"/Users/a01/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/turbolinks-source-5.2.0/lib/assets/javascripts", 9#<Pathname:/Users/a01/projects/myapp/node_modules>, 10#<Pathname:/Users/a01/projects/myapp/app/javascript/packs>, 11#<Pathname:/Users/a01/projects/myapp/app/javascript/src>]

コマンド
bundle exec production deploy:assets:precompile
bundle exec cap production unicorn:restart
RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c /var/www/myapp/current/config/unicorn.rb -E production -D

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問