关于在运行guard init

时间:2015-10-10 09:46:05

标签: ruby-on-rails ruby rspec guard

在我的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'

2 个答案:

答案 0 :(得分:13)

如果您运行spark/conf,它将使用全局安装的guard init rspec。要运行通过Gemfile安装的那个,请使用guard-rails。这也是the documentation中推荐的内容。

来自自述文件:

  

始终通过Bundler运行Guard以避免错误非常重要。

所以最好认真对待这个警告,以避免问题。

答案 1 :(得分:1)

更技术性的答案:

有三种方法可以为您的Ruby(或Rails)项目选择宝石:

  1. 因为它们安装在您的系统上(通过查看$GEM_HOME等环境变量),例如guard init rspec会在guard中查找guard-rspec$GEM_HOME。通常RubyGems将使用您安装的最新安装版本(并不总是您想要的版本)。

  2. 如果您有Bundler,bundle exec guard init rspec将导致您的宝石加载到Gemfile.lock中列出的版本中。这也允许您直接从应用程序捆绑的其他文件夹(:path中的Gemfile选项)(例如.bundle目录)加载gems,甚至可以从GitHub下载和更新(使用:github:branch等选项。

  3. 如果您有最新版本的RubyGems,它还可以从Gemfile.lock加载您的宝石。但前提是您已正确设置$RUBYGEMS_GEMDEPS环境。它像Bundler一样工作(它读取你的Gemfile.lock),除了它没有所有的功能(比如从GitHub存储库加载gems)。

  4. 通常,如果您的项目有Gemfile,最好使用Bundler,因为它可以确保所有宝石的所有版本都符合您的预期。