尝试运行命令时出现此错误:
guard
在尝试安装后卫之前,这是我一直在开发的应用程序......
我正按照Ryan Bates关于警卫的教程的指示:
http://railscasts.com/episodes/264-guard
这是我的Gem文件。
source 'https://rubygems.org'
gem 'rails', '3.2.14'
gem 'rake'
gem 'mysql2'
gem 'bcrypt-ruby'
gem 'devise'
gem 'rails_admin'
gem 'jbuilder'
gem 'gon'
gem 'dynamic_form'
gem 'therubyracer', :require => 'v8'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'rails3-jquery-autocomplete'
gem 'roo'
group :assets do
gem 'sass-rails', '~> 3.2.4'
gem 'coffee-script', '~> 2.2.0'
gem 'uglifier', '~> 1.2.3'
end
group :development, :test do
gem 'capistrano'
gem 'bullet'
gem 'rvm-capistrano'
gem 'better_errors'
gem 'rspec-rails', '2.10.0'
gem 'awesome_print'
gem 'wirble'
gem 'thin'
gem 'guard-rspec'
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
end
group :test do
gem 'capybara', '1.1.2'
gem 'faker'
gem 'factory_girl_rails'
gem 'spork', '~> 1.0rc'
end
这是完整的错误:
app3 git:(write-tests) ✗ guard
/Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/lib/guard.rb:47:in `setup': uninitialized constant Listen::Turnstile (NameError)
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/lib/guard.rb:155:in `start'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/lib/guard/cli.rb:104:in `start'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor/command.rb:27:in `run'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor/invocation.rb:120:in `invoke_command'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor.rb:363:in `dispatch'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor/base.rb:439:in `start'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/bin/guard:6:in `<top (required)>'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/guard:23:in `load'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/guard:23:in `<main>'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `<main>'
答案 0 :(得分:13)
您的宝石文件中没有gem "guard"
。
我遇到了同样的错误。
我所包含的其中一个插件 guard-bundler ,将防护版本锁定在1.4.0,而最新版本的防护版本为2.0.5。删除该插件修复了错误。不要忘记从保护文件中删除guard-bundler代码。
我猜你的防卫宝石是作为系统宝石安装的。将它放在您的gem文件中并使用bundle exec
运行它。
coderay上的guard和better_errors之间也存在依赖冲突。我把它固定在1.0.5,以便安装它们。我没有测试任何与coderay相关的功能,以查看该版本是否会导致better_errors出现问题。
gem 'coderay', '~> 1.0.5'
答案 1 :(得分:9)
我的rails 3.2.13 app遇到了类似的问题。
令人困惑的部分是我的Gemfile中没有gem 'guard'
,但宝石显然是以下内容的依赖:
gem 'guard-rspec'
gem 'guard-livereload'
gem 'guard-cucumber'
一切都有效,直到最近的bundle update
,它带来了listen
的更新版本,guard
的依赖关系之一,而guard
本身却被阻止了(不知道为什么)。因此,您看到的错误是guard
尝试调用listen
中不再存在的类。
通过将guard
的当前版本明确添加到Gemfile
来解决问题:
gem 'guard', '>=2.1.0'
当然还有重新捆绑。