无法获得在Heroku Cedar上工作的Rails 3.1,Compass,Sass,Blueprint

在大多数情况下,我都遵循了这里的方向

这导致以下错误来自它要求我创建的初始化程序:

from /app/config/initializers/sass.rb:1:in `' 2011-09-05T16:45:42+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/railties- 3.1.0/lib/rails/railtie/configuration.rb:78:in `method_missing': undefined method `sass' for #  (NoMethodError) 

入门的Heroku页面也没什么帮助。 只有没有初始化程序,它基本上是相同的指令。 然而没有它,那么它找不到任何蓝图的东西,所以我仍然无法启动。

那里的人比我更进一步吗?

编辑更多历史记录:

我经历了一些错误来到这里,所以我想我应该把它们全部写出来。 我遇到的第一个问题是html5-boilerplate在:资产,这意味着没有找到ie_html方法,所以我把它拉出来:资产。

这导致了这个错误,因为html5-boilerplate依赖于指南针:

 2011-09-05T17:15:47+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/bundler/gems/compass-b7f44a48d375/lib/compass/version.rb:56:in `const_missing': uninitialized constant Compass::Frameworks (NameError) 2011-09-05T17:15:47+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/bundler/gems/compass-html5-boilerplate-405f9ddbca56/lib/html5-boilerplate.rb:1:in `' 

最后,最终的解决方案是使sass-rails全局化(或至少看起来已经存在)。 我有点觉得我终于通过共同发生来实现这一点,但现在就是这样。

我把指南针拉出来:资产并使其成为全球性的。 然后导致编译SCSS文件的错误最终导致我升级到Ceder,然后导致蓝图丢失错误。

最后,我添加了初始化程序,我认为这是为了将指南针框架内容添加到配置路径中。 希望一切都有所帮助。

这是相关的代码:

 gem 'heroku' gem 'haml' gem 'compass', :git => 'git://github.com/chriseppstein/compass.git' gem 'html5-boilerplate', :git => 'git://github.com/sporkd/compass-html5-boilerplate.git' gem 'sass-rails', " ~> 3.1.0" 

请注意罗盘和html5样板的github版本(如果不使用它,则不需要h5bp)。

初始化程序是:

 Rails.configuration.sass.tap do |config| config.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets" end 

问题不在于sass-rails需要是全局的,而是全局集中的东西依赖于sass-rails。

对我来说,解决方案是将罗盘移入资产组。

我在这里提出了一些详细的说明: http : //www.mattvanhorn.com/2012/01/07/heroku-cedar-assets-ruby-1-9/

它包括使用在Heroku Cedar堆栈上运行的Compass框架获取基本的Rails 3.1应用程序。

还有一个指向 github repo的链接( http://github.com/mattvanhorn/placepanda/commits ),因此您可以按照提交的步骤进行操作。

如果您正在使用蓝图,则可能还需要在application.rb中添加load_paths。 我在另一个这样的app上使用twitter bootstrap,我得到了:

 if Rails.configuration.respond_to?(:sass) config.sass.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets" config.sass.load_paths << "#{Gem.loaded_specs['compass_twitter_bootstrap'].full_gem_path}/lib/../stylesheets" end 

在我的application.rb中,条件是防止Heroku在启动时被禁止,当config.sass将不再可用时,因为它是预编译。