我有一个成功的Rails 3.0.x项目,Gemfile中有以下Gems子集:
gem "compass"
gem "haml"
gem "haml-rails"
gem "html5-boilerplate"
我今天尝试升级到Rails 3.1并保留所有功能,并且这样做有很多问题。我还没有找到在生产模式下对我有用的配置,所以我现在正在开发模式。
我在这里遵循以下建议:
production.rb
,development.rb
和application.rb
以更新资产管道的配置。但是没有触及指南针,sass和html5-boilerplate。ie_html
在生产模式下不可用。 Gemfile中的更改记下来ie_html
,Html-Boilerplate必须是全局的。group :assets
块中的某些Gems都不成功。大多数时候,例如,指南针和sass,或指南针和html5-boilerplate无法实现。所以我的问题是:是否有一个工作的Gemfile允许使用Haml,Sass,Compass,Html5-Boilerplate,当然还有Rails 3.1?
新的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应用程序,并添加了一个图像资源。一切都很好,所以开发模式和生产模式之间没有区别。在我迁移的应用程序中,我现在有以下状态:
答案 0 :(得分: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
文件并只使用这些文件。
这适合我,所以应该工作!干杯
答案 1 :(得分:0)
只是包含其他人可能提供帮助的一些信息,这里我现在的情况(或多或少):
Gemfile
。production.rb
)解决了这个问题。我不会在这里投入更多时间,等待Rails 3.1.1和html5-boilerplate的更新。
答案 2 :(得分:0)
首先,我为添加另一个答案道歉,但我认为历史对其他人有帮助。
我再次尝试(感谢@theanym的评论)用rails 3.1.1,html5-boilerplate,compass,sass和haml创建一个新的应用程序,我找到了一个适用于开发和生产模式的工作解决方案。
这些是我采取的步骤:
当我在生产模式下启动时,出现以下错误:
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'
然后我更改了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
,但这只是一个小小的调整。使用开发和生产模式测试应用程序,似乎没有错误。