在我的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'
答案 0 :(得分:13)
如果您运行spark/conf
,它将使用全局安装的guard init rspec
。要运行通过Gemfile安装的那个,请使用guard-rails
。这也是the documentation中推荐的内容。
来自自述文件:
始终通过Bundler运行Guard以避免错误非常重要。
所以最好认真对待这个警告,以避免问题。
答案 1 :(得分:1)
更技术性的答案:
有三种方法可以为您的Ruby(或Rails)项目选择宝石:
因为它们安装在您的系统上(通过查看$GEM_HOME
等环境变量),例如guard init rspec
会在guard
中查找guard-rspec
和$GEM_HOME
。通常RubyGems将使用您安装的最新安装版本(并不总是您想要的版本)。
如果您有Bundler,bundle exec guard init rspec
将导致您的宝石加载到Gemfile.lock
中列出的版本中。这也允许您直接从应用程序捆绑的其他文件夹(:path
中的Gemfile
选项)(例如.bundle
目录)加载gems,甚至可以从GitHub下载和更新(使用:github
,:branch
等选项。
如果您有最新版本的RubyGems,它还可以从Gemfile.lock
加载您的宝石。但前提是您已正确设置$RUBYGEMS_GEMDEPS
环境。它像Bundler一样工作(它读取你的Gemfile.lock
),除了它没有所有的功能(比如从GitHub存储库加载gems)。
通常,如果您的项目有Gemfile
,最好使用Bundler,因为它可以确保所有宝石的所有版本都符合您的预期。