2014-02-15 34 views
1

我一直在关注http://ruby.railstutorial.org/chapters/static-pages的教程,我在Rails 4.0.2中使用ruby 2.0.0。我已安装Guard,并将其配置为使用spork。 Everythign正在工作 - sorta。我应该使用什么版本的宝石?

我遇到一个bug这里https://github.com/guard/guard/issues/495

注意到我试图改变的版本要求,所以我使用最新版本的宝石在我的开发团队,但改变的东西,触发后卫来运行它运行它们的规格时, 3次。

这里是我的宝石文件:

source 'https://rubygems.org' 
ruby '2.0.0' 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.2' 

group :development, :test do 
    #gem 'sqlite3', '1.3.8' 
    gem 'mysql2' 
    gem 'rspec-rails'#, '2.13.1' 
    gem 'guard-rspec'#, '2.5.0' 
    gem 'spork-rails'#, '4.0.0' 
    gem 'guard-spork'#, '1.5.0' 
    gem 'childprocess'#, '0.4.2' 
end 

group :test do 
    gem 'selenium-webdriver', '2.35.1' 
    gem 'capybara', '2.1.0' 
    gem 'libnotify'#, '0.8.0' 
end 

gem 'sass-rails', '4.0.1' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.1' 
gem 'jquery-rails', '3.0.4' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

这里是我的GuardFile

# A sample Guardfile 
# More info at https://github.com/guard/guard#readme 
require 'active_support/inflector' 
interactor :simple 
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' } do 
    watch('config/application.rb') 
    watch('config/environment.rb') 
    watch('config/environments/test.rb') 
    watch(%r{^config/initializers/.+\.rb$}) 
    watch('Gemfile.lock') 
    watch('spec/spec_helper.rb') { :rspec } 
    watch('test/test_helper.rb') { :test_unit } 
    watch(%r{features/support/}) { :cucumber } 
end 

guard :rspec, all_after_pass: false, cli: '--drb' do 

    watch(%r{^spec/.+_spec\.rb$}) 
    watch(%r{^lib/(.+)\.rb$})  { |m| "spec/lib/#{m[1]}_spec.rb" } 
    watch('spec/spec_helper.rb') { 'spec' } 

    # Rails example 
    watch(%r{^app/(.+)\.rb$})       { |m| "spec/#{m[1]}_spec.rb" } 
    watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$})   { |m| "spec/#{m[1]}#{m[2]}_spec.rb" } 
    watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] } 
    watch(%r{^spec/support/(.+)\.rb$})     { 'spec' } 
    watch('config/routes.rb')       { 'spec/routing' } 
    watch('app/controllers/application_controller.rb') { 'spec/controllers' } 
    watch(%r{^app/views/(.+)/}) { |m| (m[1][/_pages/] ? "spec/requests/#{m[1]}_spec.rb" : "spec/requests/#{m[1].singularize}_pages_spec.rb")} 
    # Capybara features specs 
    watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$})  { |m| "spec/features/#{m[1]}_spec.rb" } 

    # Turnip features and steps 
    watch(%r{^spec/acceptance/(.+)\.feature$}) 
    watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' } 
end 

这里是我的规格帮手:

require 'rubygems' 
require 'spork' 

Spork.prefork do 
    rubymine_home = '/home/matt/Desktop/RubyMine-6.0.3/' 
    if rubymine_home 
    $:.unshift(File.expand_path('rb/testing/patch/common', rubymine_home)) 
    $:.unshift(File.expand_path('rb/testing/patch/bdd', rubymine_home)) 
    end 

... Defaults Here ... 

end 
Spork.each_run do 
    # This code will be run each time you run your specs. 

end 

这里是捆绑的结果显示

Gems included by the bundle: 
    * actionmailer (4.0.2) 
    * actionpack (4.0.2) 
    * activemodel (4.0.2) 
    * activerecord (4.0.2) 
    * activerecord-deprecated_finders (1.0.3) 
    * activesupport (4.0.2) 
    * arel (4.0.2) 
    * atomic (1.1.14) 
    * builder (3.1.4) 
    * bundler (1.5.3) 
    * capybara (2.1.0) 
    * celluloid (0.15.2) 
    * celluloid-io (0.15.0) 
    * childprocess (0.4.2) 
    * coderay (1.1.0) 
    * coffee-rails (4.0.1) 
    * coffee-script (2.2.0) 
    * coffee-script-source (1.7.0) 
    * diff-lcs (1.2.5) 
    * erubis (2.7.0) 
    * execjs (2.0.2) 
    * ffi (1.9.3) 
    * formatador (0.2.4) 
    * guard (2.4.0) 
    * guard-rspec (2.5.0) 
    * guard-spork (1.5.0) 
    * hike (1.2.3) 
    * i18n (0.6.9) 
    * jbuilder (1.0.2) 
    * jquery-rails (3.0.4) 
    * json (1.8.1) 
    * libnotify (0.8.0) 
    * listen (2.5.0) 
    * lumberjack (1.0.4) 
    * mail (2.5.4) 
    * method_source (0.8.2) 
    * mime-types (1.25.1) 
    * mini_portile (0.5.2) 
    * minitest (4.7.5) 
    * multi_json (1.8.4) 
    * mysql2 (0.3.15) 
    * nio4r (1.0.0) 
    * nokogiri (1.6.1) 
    * polyglot (0.3.3) 
    * pry (0.9.12.6) 
    * rack (1.5.2) 
    * rack-test (0.6.2) 
    * rails (4.0.2) 
    * railties (4.0.2) 
    * rake (10.1.1) 
    * rb-fsevent (0.9.4) 
    * rb-inotify (0.9.3) 
    * rdoc (3.12.2) 
    * rspec (2.13.0) 
    * rspec-core (2.13.1) 
    * rspec-expectations (2.13.0) 
    * rspec-mocks (2.13.1) 
    * rspec-rails (2.13.1) 
    * rubyzip (0.9.9) 
    * sass (3.2.14) 
    * sass-rails (4.0.1) 
    * sdoc (0.3.20) 
    * selenium-webdriver (2.35.1) 
    * slop (3.4.7) 
    * spork (1.0.0rc4) 
    * spork-rails (4.0.0) 
    * sprockets (2.10.1) 
    * sprockets-rails (2.0.1) 
    * thor (0.18.1) 
    * thread_safe (0.1.3) 
    * tilt (1.4.1) 
    * timers (1.1.0) 
    * treetop (1.4.15) 
    * turbolinks (1.1.1) 
    * tzinfo (0.3.38) 
    * uglifier (2.1.1) 
    * websocket (1.0.7) 
    * xpath (2.0.0) 

我一直在Ruby on Rails编程只有4天(其中2人试图让它工作)。为什么宝石兼容性必须如此复杂!我应该用什么来解决我所面临的后卫问题?

+1

说实话,如果你刚刚接触rails,我现在不会担心Guard和Spork,并专注于Rails。不要让你不需要的东西过于复杂。无论如何,无论如何,大多数人现在都将守卫/斯波克放入宙斯。 :) – Jon

+0

@Jon感谢您的意见。我只是想做些什么教程告诉我:-P。我习惯于PHP,可以快速学习任何语言。我喜欢轨道设置的方式。我特别喜欢rspec单元测试。我想我也只是想出了答案: - /。 – Bil1

回答

1

在发布问题之前,我一直在研究这个问题近一个小时,但后来我发现guard-rspec是需要更新的东西。我不知道如何告诉ruby使用最新的稳定版本。如果有人可以澄清,在评论中,我将不胜感激。

的解决办法是改变宝石文件: 宝石“护rspec的”,“4.2.6”

然后做捆绑更新

,杀害,再次运行后卫(或某些捆绑高管后卫)

+0

如果您不指定数字,bundler将在您运行“bundle update”时获取最新的可用版本。此外,请查看http://gemnasium.com,了解您的宝石是否过时。开放存储库是免费的。 – Jon

+0

此外,如果您没有指定任何版本号,Bundler有时可能会使用旧版本的gem,如果这也解决了。确保在每个软件包更新后检查您的Gemfile.lock。 – iain

+0

@iain我正在经历这个。我如何纠正捆绑并强制它获得最新的宝石? (除了在我的gemfile中指定确切版本) – Bil1

相关问题