关于 运行 guard init 时不使用捆绑器的警告
Warning regarding not using bundler when running guard init
在我的 Rails 应用程序中,当 运行 guard init rspec
:
时收到此警告
Warning: you have a Gemfile, but you're not using bundler or
RUBYGEMS_GEMDEPS
14:54:15 - INFO - Writing new Guardfile to
/home/ubuntu/railsprojects/sillyfish/Guardfile 14:54:16 - INFO - rspec
guard added to Guardfile, feel free to edit it
我不明白为什么会显示它。可以忽略此警告吗?
这是我的 Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.2.4'
gem 'pg'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development, :test do
gem 'rspec-rails', '3.3.3'
gem 'guard-rspec', require: false
gem 'spring-commands-rspec'
gem 'byebug'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
end
group :test do
gem 'capybara', '2.5.0'
end
#custom gems
gem 'puma'
gem 'bootstrap-sass', '~> 3.3.5'
gem 'devise', '~> 3.5.2'
如果你运行guard init rspec
,它将使用全局安装的guard-rails
。要 运行 通过 Gemfile 安装的那个,请使用 bundle exec guard init rspec
。这也是the documentation.
中推荐的
来自自述文件:
It's important that you always run Guard through Bundler to avoid errors.
因此,最好认真对待此警告,以避免后续出现问题。
更技术性的回答:
可以通过 3 种方式为您的 Ruby(或 Rails)项目选择宝石:
因为它们安装在您的系统上(通过查看 $GEM_HOME
等环境变量),例如guard init rspec
将在您的 $GEM_HOME
中查找 guard
和 guard-rspec
。通常 RubyGems 会使用您安装的最新安装版本(并不总是您想要的)。
如果您有 Bundler,bundle exec guard init rspec
将导致您的 gem 以您的 Gemfile.lock
中列出的版本加载。这也允许您直接从与应用程序捆绑在一起的其他文件夹(在您的 Gemfile
中使用 :path
选项的任何地方)加载宝石(例如 .bundle
目录),甚至从 [=46 下载和更新=](使用 :github
、:branch
等选项)。
如果您有最新版本的 RubyGems,它还可以从 Gemfile.lock
加载您的宝石。但前提是您正确设置了 $RUBYGEMS_GEMDEPS
环境。它的工作方式类似于 Bundler(它读取您的 Gemfile.lock
),除了它不具备所有功能(例如从 GitHub 存储库加载 gems)。
一般来说,如果您的项目有Gemfile
,最好使用Bundler,因为它可以确保所有gem 的所有版本都符合您的期望。
在我的 Rails 应用程序中,当 运行 guard init rspec
:
Warning: you have a Gemfile, but you're not using bundler or
RUBYGEMS_GEMDEPS
14:54:15 - INFO - Writing new Guardfile to
/home/ubuntu/railsprojects/sillyfish/Guardfile 14:54:16 - INFO - rspec
guard added to Guardfile, feel free to edit it
我不明白为什么会显示它。可以忽略此警告吗?
这是我的 Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.2.4'
gem 'pg'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development, :test do
gem 'rspec-rails', '3.3.3'
gem 'guard-rspec', require: false
gem 'spring-commands-rspec'
gem 'byebug'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
end
group :test do
gem 'capybara', '2.5.0'
end
#custom gems
gem 'puma'
gem 'bootstrap-sass', '~> 3.3.5'
gem 'devise', '~> 3.5.2'
如果你运行guard init rspec
,它将使用全局安装的guard-rails
。要 运行 通过 Gemfile 安装的那个,请使用 bundle exec guard init rspec
。这也是the documentation.
来自自述文件:
It's important that you always run Guard through Bundler to avoid errors.
因此,最好认真对待此警告,以避免后续出现问题。
更技术性的回答:
可以通过 3 种方式为您的 Ruby(或 Rails)项目选择宝石:
因为它们安装在您的系统上(通过查看
$GEM_HOME
等环境变量),例如guard init rspec
将在您的$GEM_HOME
中查找guard
和guard-rspec
。通常 RubyGems 会使用您安装的最新安装版本(并不总是您想要的)。如果您有 Bundler,
bundle exec guard init rspec
将导致您的 gem 以您的Gemfile.lock
中列出的版本加载。这也允许您直接从与应用程序捆绑在一起的其他文件夹(在您的Gemfile
中使用:path
选项的任何地方)加载宝石(例如.bundle
目录),甚至从 [=46 下载和更新=](使用:github
、:branch
等选项)。如果您有最新版本的 RubyGems,它还可以从
Gemfile.lock
加载您的宝石。但前提是您正确设置了$RUBYGEMS_GEMDEPS
环境。它的工作方式类似于 Bundler(它读取您的Gemfile.lock
),除了它不具备所有功能(例如从 GitHub 存储库加载 gems)。
一般来说,如果您的项目有Gemfile
,最好使用Bundler,因为它可以确保所有gem 的所有版本都符合您的期望。