36

Heroku にアプリをデプロイしましたが、理解できない問題が 1 つあります。アプリのCSSがBootstrap-sass読み込まれないため、スタイルのないアプリがあります。現時点では、これは単なる静的ページのコレクションです。

私は README https://github.com/thomas-mcdonald/bootstrap-sassの 1 つのステップを除いてすべて実行しました。イメージがベンダーおよび lib でコンパイルされないようにする Rails の変更により、次の行を application.rb に追加する必要があります。

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)

私はまだプログラミングに非常に慣れていないので、最初の問題は、これを application.rb ファイル内のどこにどのように追加するのか見当がつかないことです。上記のコード行を適切に追加する方法と場所を誰かが教えてくれると助かります。

2 番目の問題は、使用している gem に関連している可能性がありますが、アプリを作成したときに、sass-rails gem が ~> 4.0.0.beta1 でインストールされました。README によると、使用するバージョンは 3.2 です。これも問題になる可能性があるため、誰かが私の問題の根本的な理由であると判断した場合に備えて、gem ファイルを含めました。

あなたが提供できる助けを前もって感謝します。

編集:コードがherokuにデプロイされた後ではなく、ローカルホストでスタイルが適切に機能する結果となった最初の試行で行った手順を追加します。

  1. 新しい Rails 4 アプリを作成しました (以下の gem ファイル)
  2. 以下の gem ファイルにリストされている bootstrap-sass gem を追加しました
  3. 製品グループの私の gem ファイルに PG gem を追加し、SQLite3 を開発とテストに移動しました (ステップ 2 と 3 に従って、バンドル インストールを実行し、製品を実行しませんでした)。
  4. 静的ホームページのページ コントローラーを作成しました
  5. スタイルが機能しているかどうかを確認するためだけに、ホームページのヒーローユニット内に h1 を追加しました
  6. styles.css.scss ファイルを追加し、@import 'bootstrap' を含めました。スタイルシートに
  7. git リポジトリを作成し、最初のコミットを実行して、コードを git にプッシュしました
  8. heroku アプリを作成し、マスターを heroku にプッシュしました

2 回目の試行では、ホームページにナビゲーション バーを追加し (それが誰かに違いをもたらす場合)、手順 7 と 8 を再度実行しましたが、これらの手順を実行する直前に、次のコード行を実行しました。

RAILS_ENV=production bundle exec rake assets:precompile

最終的に、ローカル ホストでは適切なスタイルのサイトになりましたが、Heroku では動作するスタイルはありませんでした。上記の最初の投稿で指摘したように、application.rb ファイルに追加する必要があるコード行がありますが、ファイルにコード行を適切に追加する方法を理解していなかったため、従わなかったのです。

Gemfile:

source 'https://rubygems.org'

ruby "2.0.0"

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.beta1'

group :production do
gem 'pg'
end

group :development, :test do
gem 'sqlite3'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails',   '~> 4.0.0.beta1'
gem 'coffee-rails', '~> 4.0.0.beta1'

gem 'bootstrap-sass', '~> 2.3.1.1'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more:  https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.0.1'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano', group: :development

# To use debugger
# gem 'debugger'
4

8 に答える 8

71

私はちょうど今 (2013 年 6 月 13 日)、Heroku 開発者からこの回答を得て、そのサポートが私を障壁を越えて導いてくれました。これは、Heroku アプリで動作する localhost から CSS ディスプレイを取得した方法です。

「本番環境でアセットの提供を有効にし、ロガーを stdout に設定して、Rails4 を Heroku で動作させるだけです。現在、Rails 4 アプリのデプロイ プロセスをスムーズにするために取り組んでいますが、当面は変更するだけでかまいません。これらの行をコードに追加すれば、それらの gem は必要ありません。」(ブレットとニールの素晴らしいニュースに感謝します)

/config/environments/production にあります。設定:

config.cache_classes = true
config.serve_static_files = true
config.assets.compile = true
config.assets.digest = true

ロガーの標準出力については知らないので、確認できません。

git add を実行します。そしてgit commit。

/config/database.yml に以下があることを確認してください。

production:
  adapter: postgresql
  encoding: unicode
  database: Your_appname_production

この情報は、以下の env コマンドで必要になります。

Gemfile で運用中の gem 'pg' があることを確認してください。別の git commit を実行してください。

アプリのターミナルで次のコマンドを 1 行で実行します。

env RAILS_ENV=production DATABASE_URL=postgresql://user:pass@127.0.0.1/Your_app_name_production bundle exec rake assets:precompile 2>&1

ここで、DATABASE_URL=postgresql は yml ファイルの本番アダプターと同一であり、Heroku は本番のみを実行しているように見えるため、Your_app_name_production が指定されています。

私は反対され、必要ありませんでした:

group :production do
  gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
  gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
end

bundle install と Heroku でエラーになります。

これが役立つかどうかはわかりませんが、生産も追加しました

Bundler.require(*Rails.groups(assets: %w(development test production)))

そのアドバイスをどこで見たか思い出せません。

HTH アレル

于 2013-06-13T08:38:35.677 に答える
18

bundle exec rake assets:precompileherokuにプッシュする前に実行してください

于 2013-11-14T09:35:23.523 に答える
2

config.assets.compile = trueこれがパフォーマンスに影響を与えるとは設定しません(ただし、機能します)。

ここで概説したように: https://stackoverflow.com/a/16882028/647427

When using the asset pipeline, paths to assets must be re-written and sass-rails provides -url and -path helpers (hyphenated in Sass, underscored in Ruby) for the following asset classes: image, font, video, audio, JavaScript and stylesheet.

image-url("rails.png") becomes url(/assets/rails.png)
image-path("rails.png") becomes "/assets/rails.png"
The more generic form can also be used but the asset path and class must both be specified:

asset-url("rails.png", image) becomes url(/assets/rails.png)
asset-path("rails.png", image) becomes "/assets/rails.png"
于 2014-01-14T21:41:08.173 に答える
2
config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true

これらをconfig/envirnoments/production.rbで設定すると、Apacheサーバーで同様の問題が修正されました

于 2013-08-21T09:30:03.973 に答える