【问题标题】:What is the proper way to upgrade Bootstrap 4 for Rails?升级 Bootstrap 4 for Rails 的正确方法是什么?
【发布时间】:2018-09-05 08:28:18
【问题描述】:
我尝试将我的 Rails 5 项目从 Bootstrap 4 Alpha 6 升级到 4.0.0 final 版本,我确定 v4.0.0 gem 已安装(我也卸载了 alpha 版本的 gem),但是当我运行我的项目(开发模式)时,我发现生成的 Bootstrap CSS 文件仍然基于 Alpha 版本。
gem 'bootstrap', '~> 4.0.0'
除了卸载旧的 gem 并安装新的引导 gem 之外,我还需要为升级做其他事情吗?下载物理v4.0.0文件并替换我项目中的旧文件?
【问题讨论】:
标签:
css
ruby-on-rails
twitter-bootstrap
ruby-on-rails-5
twitter-bootstrap-4
【解决方案1】:
尝试将 Ruby 依赖项保留在您的 Gemfile 和 JS/CSS 的其他地方。 Node+Yarn 是一个很好的方法。
如果还没有
brew install yarn
然后在config/initializers/assets.rb中
Rails.application.config.assets.paths << Rails.root.join('node_modules')
现在您可以在控制台中执行此操作:
yarn add bootstrap
如果还没有,它应该创建一个 node-modules 目录。
然后只需将引导程序添加到您的 JS/SCSS 文件中
JS
//= require bootstrap/js/src/index
CSS
@import "bootstrap/scss/bootstrap";
【解决方案2】:
你可以看看这篇文章:
How to update a single gem conservatively
选项 1
如果更新的所有依赖项都已经满足,这将起作用。
找出您要更新到的版本
直接在Gemfile.lock改一下
- 运行 bundle install 看看是否有效
选项 2
如果 gem 与其他 gem 没有共享依赖项,这将起作用。
- 找出您要更新到的版本。
- 使用
'=1.2.3' 将该版本显式添加到 Gemfile
- 运行
bundle install
- 再次删除显式版本号
- 再次运行
bundle install
选项 3
这应该总是有效的。
- 运行
bundle update GEMNAME
- 运行
git diff Gemfile.lock 并注意所有您不想要的更新
- 将不需要的更改还原为您不想要的
Gemfile.lock(手动或逐行暂存更改的行),只保留所需的更新。
- 运行
bundle install 看看是否有效
选项 4
一直有传言称您可以通过调用 bundle update --source GEMNAME 来更新单个 gem。但是,似乎没有人知道它是如何以及为什么起作用的,它不是 Bundler 的一个记录功能。这可能是其他东西的意外副作用。
我相信这个命令只会尝试更新 GEMNAME 和 GEMNAME。如果这导致对其他锁定的 gem 的依赖不匹配,它将失败。
如果您使用此选项,请务必 git diff 您的 Gemfile.lock 以查看更改是否符合您的预期。
选项 5
Bundler >= 1.14 有一个--conservative flag。使用保守标志允许 bundle update GEM 更新 GEM 的版本,但阻止 Bundler 更新 GEM 所依赖的任何 gem 的版本。
致谢作者:Henning Koch