Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 如何创建为Rails3和Rails4项目提供静态资产的gem_Css_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 4_Gem - Fatal编程技术网

Css 如何创建为Rails3和Rails4项目提供静态资产的gem

Css 如何创建为Rails3和Rails4项目提供静态资产的gem,css,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,gem,Css,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Gem,我们一直在尝试制作一个gem,将我们的CSS文件服务于rails3和rails4项目。有了gem,我们应该能够只在一个地方进行更改,gem,为我们的所有项目进行视觉更改 除此之外,我们找到的所有教程都不再是最新的或无法使用。使用中的教程,我们可以创建一个最小的gem,将CSS文件添加到rails3和rails4项目中 宝石 lib/static_assets.rb lib/static\u assets/engine.rb 这似乎是创建gem的最小代码。rake构建成功,rake发布也成功 但在

我们一直在尝试制作一个gem,将我们的CSS文件服务于rails3和rails4项目。有了gem,我们应该能够只在一个地方进行更改,gem,为我们的所有项目进行视觉更改

除此之外,我们找到的所有教程都不再是最新的或无法使用。使用中的教程,我们可以创建一个最小的gem,将CSS文件添加到rails3和rails4项目中

宝石

lib/static_assets.rb

lib/static\u assets/engine.rb

这似乎是创建gem的最小代码。rake构建成功,rake发布也成功

但在将gem添加到Rails 3项目时,它找不到CSS文件:

Gemfile

application.css

启动项目并转到“索引”页面时,出现以下错误:

 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)
我们需要修改什么才能获得一个最小的代码示例,用于将样式表添加到支持Rails3和Rails4的Rails项目中


代码可以在

上找到,几个月前我写了一篇gem-

不是CSS,只有我可以在这里详述的图像:

-

引擎

当您为Rails编写gem时,它可以包含在Rails应用程序中

对此最基本的解释是,当你加载gem时,它实际上会将隐藏的文件和功能附加到你的应用程序中。不是魔术或巫术——实际上只是将新文件添加到应用程序的运行时环境中,允许您调用该功能,就像您自己编写的一样

当我明白了这一点,宝石的创作过程变得简单多了

-

资产

我认为您最好将资产放入以下文件结构:

app
|-- assets
|    |-- stylesheets
|    |   |-- static_assets
|    |   |   |-- static_assets.css
这将使您的引擎能够使用/创建所需的文件,从而让它们代表您工作。与许多其他基于Rails的Gem一样,Rails环境将根据可用文件加载资产管道

正如我所提到的,一个引擎确实可以在运行时将文件注入到应用程序中。这意味着,与其他gem(如gem)一样,您必须按如下方式调用这些注入文件:

#app/assets/stylesheets/application.css
/*
  *= require static_assets/static_assets
*/

这应该对你有用-如果没有,我们将不得不在评论中进行调查

谢谢!有了您建议的更改,gem现在正在我们的rails4项目中工作!我现在唯一的问题是它在Rails3项目中不起作用。甚至可以制作一个gem来支持两个版本的rails吗?
body{
  background-color: red !important;
}
gem 'static_assets'
*= 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)
app
|-- assets
|    |-- stylesheets
|    |   |-- static_assets
|    |   |   |-- static_assets.css
#app/assets/stylesheets/application.css
/*
  *= require static_assets/static_assets
*/