4

我有一个成功的 Rails 3.0.x 项目,在 Gemfile 中有以下 Gems 子集:

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

我今天尝试升级到 Rails 3.1 并保留所有功能,但这样做有很多问题。我还没有找到在生产模式下对我有用的配置,所以我现在正在使用开发模式。

我在这里遵循了以下建议:

  • Railscast的“升级到 Rails 3.1” :和往常一样好,并告诉我如何更改production.rb和更新资产管道的配置。但没有接触 compass、sass 和 html5-boilerplate。development.rbapplication.rb
  • “使用 Rails 3.1 设置 html-boilerplate”最适合我,但不起作用,因为该方法ie_html在生产模式下不可用。记下 Gemfile 中的更改
  • “无法让 Rails 3.1、Compass、Sass、Blueprint 在 Heroku Cedar 上工作”这对我来说根本不起作用,我当时编译的资产有问题。那里的尝试是让一切都是全局的,因为 Compass 和 Html-Boilerplate 之间存在依赖关系,并且 Html-Boilerplate 由于方法而必须是全局的ie_html
  • 每次尝试只使用group :assets块中的一些宝石都没有成功。大多数时候,compass 和 sass 或 compass 和 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 应用程序,并在那里添加了一个图像资源。一切正常,因此开发模式和生产模式之间没有区别。在我迁移的应用程序中,我现在具有以下状态:

  • 在开发模式下运行良好。
  • 禁用一些 html5 样板文件以解决生产中的问题。
  • 尚未在生产模式下找到预编译的图像。
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 的更新。

于 2011-09-07T16:13:13.093 回答
0

首先,我很抱歉添加另一个答案,但我认为历史对其他人有帮助。

我再次尝试(感谢@theanym 的评论)使用 rails 3.1.1、html5-boilerplate、compass、sass 和 haml 创建一个新应用程序,并且找到了适用于开发和生产模式的工作解决方案。

这些是我采取的步骤:

  1. 我从一个新应用程序开始,然后按照“使用 Rails 3.1 设置 html5-boilerplate”的方法进行操作。
  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
    

对我来说,解决方案的相关部分是表示 forcompasshtml5-boilerplate那个额外的论点:group => :production

然后我必须预编译资产,并且必须更改style.scssstyle.css.scss,但这是一个小调整。用开发和生产模式测试了应用程序,似乎没有错误。

于 2011-12-31T12:39:14.700 回答