Использование охраны с JRuby в Windows не удается - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь настроить Guard в Windows с помощью JRuby и получаю следующий вывод:

$ guard
You must 'gem install win32console' to use color on Windows
WARNING: You are using Guard outside of Bundler, this is dangerous and could not
 work. Using `bundle exec guard` is safer.
Guard uses Notifu to send notifications.
Guard is now watching at 'C:/Workspace/OE_11/CyberTrack_Rails3'
Guard::RSpec is running, with RSpec 2!

Running all specs
bundler: command not found: rspec
Install missing gem executables with `bundle install`
>

Если я просто наберу команду rspec, все будет работать. Так чего мне здесь не хватает?

$ rspec
←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m←[32m.←[0m


Finished in 1.39 seconds
←[32m8 examples, 0 failures←[0m

Я добавил путь к rspec.bat в переменную среды PATH.

Кстати, я работаю на Windows. На Ubuntu у меня все заработало в кратчайшие сроки ...

UPDATE Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.2.rc1'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'activerecord-jdbcsqlite3-adapter'

gem 'jruby-openssl'
gem 'json'

group :development do
    gem 'rspec-rails'
    gem 'guard-rspec'
end

group :test do
    gem 'rspec-rails'
    gem 'guard-rspec'
  gem 'capybara', '1.1.2'
  gem 'rb-fchange', '0.0.5'
  gem 'rb-notifu', '0.0.4'
  #gem 'win32console', '1.3.0'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  gem 'therubyrhino'

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug'

1 Ответ

1 голос
/ 01 марта 2012

Я думаю, что это ошибка bundler, поскольку при запуске я получаю ту же ошибку:

bundle exec rspec spec

Мне удается заставить ее работать, комментируя и добавляя некоторый код в guard-rspec исходный файл.

Открыть файл:

C:\jruby-1.6.7\lib\ruby\gems\1.8\gems\guard-rspec-0.6.0\lib\guard\rspec\runner.rb

Obs: обратите внимание, что этот путь может отличаться на вашем компьютере.В любом случае, просто перейдите к источнику камня guard-rspec и откройте файл runner.rb.

И измените rspec_command на следующее:

  def rspec_command(paths, options={})
    warn_deprectation(options)

    cmd_parts = []
    cmd_parts << "rvm #{options[:rvm].join(',')} exec" if options[:rvm].is_a?(Array)
    cmd_parts << "bundle exec" if (bundler? && options[:binstubs] == true && options[:bundler] != false) || (bundler? && options[:bundler] != false)
    cmd_parts << "'"
    cmd_parts << rspec_exec(options)
    cmd_parts << options[:cli] if options[:cli]
    cmd_parts << "-f progress" if options[:cli].nil? || !options[:cli].split(/[\s=]/).any? { |w| %w[-f --format].include?(w) }
    #cmd_parts << "-r #{File.dirname(__FILE__)}/formatters/notification_#{rspec_class.downcase}.rb -f Guard::RSpec::Formatter::Notification#{rspec_class}#{rspec_version == 1 ? ":" : " --out "}/dev/null" if options[:notification] != false
    cmd_parts << "--failure-exit-code #{failure_exit_code}" if failure_exit_code_supported?(options)

    cmd_parts << paths.join(' ')
    cmd_parts << "'"

    cmd_parts.join(' ')
  end

Изменения, которые я сделал:

 1. commented on of the lines
 2. Added 2 code line to add "quotes" to the string builder.

Он работает здесь, поэтому он должен работать и на вашей машине.Я открываю выпуск для пакета https://github.com/carlhuda/bundler/issues/1689 для выпуска.

...