4

私は、Rails 3.0.x プロジェクトを成功させており、Gemfile に次の Gem のサブセットがあります。

gem "compass"
gem "haml"
gem "haml-rails"
gem "html5-boilerplate"

私は今日、Rails 3.1 にアップグレードしてすべての機能を維持しようとしましたが、そうするのに多くの問題がありました。実稼働モードで機能する構成がまだ見つからないため、現在開発モードで作業しています。

ここでは次のアドバイスに従いました。

  • Railscast の「Rails 3.1 へのアップグレード」production.rb : いつものように非常によく、アセット パイプラインの構成を変更development.rbおよび更新する方法を教えてくれました。application.rbしかし、compass、sass、および html5-boilerplate には触れませんでした。
  • 「Rails 3.1 で html-boilerplate をセットアップする」これは私にとって最適なものでしたがie_html、プロダクション モードではこのメソッドを使用できないため、機能しません。Gemfile の変更を書き留めます
  • 「Rails 3.1、Compass、Sass、Blueprint を Heroku Cedar で動作させることができません」これはまったく機能しませんでした。コンパイルされたアセットに問題がありました。Compass と Html-Boilerplate の間には依存関係があり、 Html-Boilerplate は method のためにグローバルでなければならないため、すべてをグローバルにしようとしましたie_html
  • group :assetsブロック内の一部のジェムのみを使用しようとするたびに成功しませんでした。ほとんどの場合、compass と sass、または compass と html5-boilerplate の間の依存関係を満たすことができませんでした。

私の質問は次のとおりです。Haml、Sass、Compass、Html5-Boilerplate、そしてもちろん Rails 3.1 を一緒に使用できる有効な Gemfile はありますか?

新しい Gemfile は開発モードで動作しますが、本番モードでは動作しません:

gem "haml-rails"
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
  gem 'compass', '~> 0.12.alpha.0'
  gem "html5-boilerplate"
end
gem 'jquery-rails'

新しい Rails 3.1 アプリケーションを作成しようとして、そこに画像リソースを追加しました。すべてが正常に機能しているため、開発モードと本番モードに違いはありません。移行したアプリケーションでは、次の状態になりました。

  • 開発モードでうまく機能します。
  • 本番環境での問題を回避するために、html5-boilerplate の一部を無効にします。
  • 実動モードでプリコンパイル済みイメージをまだ検出していません。
4

3 に答える 3

2

私はHeroku Cedarで作業しています。

gem "rails", "~> 3.1.0"
gem 'sass-rails', "~> 3.1.0"

group :assets do
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
  gem 'compass', '~> 0.12.alpha.0'
  gem 'html5-boilerplate'
end

ただし、git push heroku最初にローカルでプリコンパイルする前に:

RAILS_ENV=production bundle exec rake assets:precompile

次に、すべてのパブリック/アセットを git リポジトリに追加してコミットします。それで:

git push heroku master

Heroku はファイルを検出し、public/assets/manifest.ymlこれらのファイルのみを使用します。

これは私にとってはうまくいくので、うまくいくはずです!乾杯

于 2011-10-16T21:31:29.933 に答える
0

最初に別の答えを追加して申し訳ありませんが、歴史は他の人にも役立つと思います。

Rails 3.1.1、html5-boilerplate、compass、sass、hamlを使用して新しいアプリケーションを作成することを再試行し(@theanymのコメントに感謝)、開発モードと本番モードで機能するソリューションを見つけました。

これらは私が取ったステップです:

  1. 私は新しいアプリケーションから始めて、レシピ「Setup html5-boilerplatewithRails3.1」に従いました。
  2. (開発モードで)アプリケーションを起動したとき、それはうまく機能しました。
  3. その後、本番モードで起動すると、次のエラーが発生しました。

    c:\apps\ruby\rails3\not>rails s -e production
    C:/apps/ruby/ruby192/lib/ruby/gems/1.9.1/gems/html5-boilerplate-1.0.0/lib/html5-boilerplate.rb:1:in `<top (required)>': 
      uninitialized constant Object::Compass (NameError)
        from C:/apps/ruby/ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
    
  4. 次に、Gemfile(関連する部分のみ)を変更しました。

    group :assets do
      gem 'sass-rails',   '~> 3.1.4'
      gem 'coffee-rails', '~> 3.1.1'
      gem "compass", '~> 0.12.alpha.0', :group => :production
      gem 'html5-boilerplate', :group => :production
      gem 'uglifier', '>= 1.0.3'
    end
    

私にとっての解決策の関連部分は、その追加の引数を示すことcompassでしhtml5-boilerplate:group => :production

次に、アセットをプリコンパイルし、に変更style.scssする必要style.css.scssがありましたが、それはマイナーな調整でした。開発モードと本番モードの両方でアプリケーションをテストしましたが、エラーはないようです。

于 2011-12-31T12:39:14.700 に答える
0

他の人が助けるかもしれない情報のいくつかを含めるために、ここで私の現在の状況は(多かれ少なかれ)機能します:

Rails 3.1.1 と html5-boilerplate の更新を待ちます。

于 2011-09-07T16:13:13.093 に答える