Ruby on rails 4 在另一个gem中包装引导sass gem会导致资产清单中断
我正在尝试将引导sass gem包装到另一个gem中(让我们称之为我的引擎)。在此过程中,我正在构建一个小型Rails应用程序来进行测试。作为第一步,我想确保引导式sass可以直接在Rails应用程序中工作。Rails应用程序的文件如下所示:Ruby on rails 4 在另一个gem中包装引导sass gem会导致资产清单中断,ruby-on-rails-4,gem,bundler,bootstrap-sass,Ruby On Rails 4,Gem,Bundler,Bootstrap Sass,我正在尝试将引导sass gem包装到另一个gem中(让我们称之为我的引擎)。在此过程中,我正在构建一个小型Rails应用程序来进行测试。作为第一步,我想确保引导式sass可以直接在Rails应用程序中工作。Rails应用程序的文件如下所示: gem 'bootstrap-sass', '3.3.1.0' gem 'my-engine, path: "~/dev/my-engine" 这个很好用。引导资产被加载到我的Rails应用程序中,一切看起来都很好。现在,我想从我的Rails应用程序中取
gem 'bootstrap-sass', '3.3.1.0'
gem 'my-engine, path: "~/dev/my-engine"
这个很好用。引导资产被加载到我的Rails应用程序中,一切看起来都很好。现在,我想从我的Rails应用程序中取出引导sass,让它通过我的引擎加载。因此,我的Rails应用程序文件现在看起来像:
gem 'my-engine, path: "~/dev/my-engine"
我的引擎的.gempec有:
spec.add_runtime_dependency 'bootstrap-sass', '3.3.1.0'
我可以重新捆绑我的引擎宝石没有问题。我可以毫无问题地重新绑定Rails应用程序。但是,当我刷新Rails应用程序的页面时,出现以下错误:
File to import not found or unreadable: bootstrap-sprockets.
当Sprocket尝试构建application.css文件时,会发生此中断。有时,这会过去,我会得到一个不同的错误,关于在构建application.js时丢失bootstrap.js javascript文件
为什么会这样?我想知道这是否与我在本地开发gems而没有发布它们有关,尽管我不确定这会影响发布的bootstrap sass的原因。我使用的是Buffer-1.5.3.
,因为您希望使用越来越多的SCSS/JS/COFEFScript文库,您可能想考虑移动到BoW.GeFixes作为引导SASS官方的来源。我们用于rake任务和自动配置。在标准bower上,它是一个非常精简的配置/rake任务层
针对您的答案,通过gem引导的问题是我将引擎切换到bower资产的原因之一。我们现在导入bootstrap sass official
并拥有完全控制权,但是请注意,对于sass文件,您需要导入到源文件的较长路径,即在我们的引擎\u应用程序中。scss
:
# our custom variable overrides
@import 'overrides/variables';
@import 'bootstrap-sass-official/assets/stylesheets/bootstrap-sprockets';
@import 'bootstrap-sass-official/assets/stylesheets/bootstrap';
注意:如果希望应用程序
sass变量覆盖引擎和sass变量,请确保引擎具有\u应用程序。scss
不是应用程序。scss
,前导下划线对于变量上下文/范围至关重要
向前看,您可能需要像我们一样忽略bower传递依赖项。
(即,某些依赖项可能使用“bootstrap”,而其他依赖项则使用“bootstrap-sass-official”等)
我们在我们的.bowerrc
中这样使用它,如下所示:
{
"ignoredDependencies": [
"bootstrap",
"bootstrap-sass",
"bootstrap-sass-official"
]
}
总之
我们已经成功地使用了几个月
bower rails
将在/vendor/assets
中安装依赖项,如果在引擎中引用,则根本不需要在应用程序项目中引用它们。维护/添加/更新库以及准确了解文件是如何包含的非常简单快捷。确保引擎中需要“引导sass”。执行此操作的一个合理位置是lib/my-engine.rb文件:
require 'bootstrap-sass'
当您试图包装gems时,在.gemspec中添加引导sass gem作为运行时依赖项是不够的 多谢各位。我要试一试。