【发布时间】:2014-08-15 09:41:02
【问题描述】:
我们一直在尝试制作一个 gem,将我们的 CSS 文件提供给我们的 Rails 3 和 Rails 4 项目。使用 gem,我们应该能够只在一个地方进行更改,即 gem,为我们所有的项目做出视觉上的改变。
除了,我们发现的所有教程都不再是最新的或不起作用。使用来自 Rake Routes 的教程,我们遇到了以下情况来创建一个 minimal gem,它将 CSS 文件添加到 Rails 3 和 Rails 4 项目
宝石规格
$:.push File.expand_path("../lib", __FILE__)
require "static_assets/version"
Gem::Specification.new do |s|
s.name = "static_assets"
s.version = StaticAssets::VERSION
s.authors = ["Etienne van Delden"]
s.email = ["evdelden@i-level.nl"]
s.homepage = "http://www.i-level.nl"
s.summary = "Summary of StaticAssets."
s.description = "Description of StaticAssets."
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.add_dependency "rails", ">= 3.1"
s.require_paths = ["lib"]
s.add_development_dependency "sqlite3"
end
lib/static_assets.rb
require "static_assets/engine"
module StaticAssets
end
lib/static_assets/engine.rb
module StaticAssets
class Engine < ::Rails::Engine
initializer 'static_assets.load_static_assets' do |app|
app.middleware.use ::ActionDispatch::Static, "#{root}/vendor"
end
end
end
vendor/assets/stylesheets/our_awesome_static_assets.css
body{
background-color: red !important;
}
这似乎是创建 gem 的最少代码。 rake builds 成功了,rake release 也成功了
但是当将 gem 添加到我们的 Rails 3 项目时,它找不到 CSS 文件:
宝石文件
gem 'static_assets'
application.css
*= require static_assets
当启动项目并进入索引页面时,我们得到以下错误:
Sprockets::FileNotFound in Sessions#new
Showing *snipped*/app/views/layouts/application.html.erb where line #14 raised:
couldn't find file 'static_assets'
(in *snipped*/app/assets/stylesheets/application.css:4)
我们需要进行哪些更改才能获得将样式表添加到支持 Rails 3 和 Rails 4 的 Rails 项目的最小代码示例?
代码可以在Github找到
【问题讨论】:
标签: css ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 gem