Я работаю над своим гравитационным камнем (https://rubygems.org/gems/gravaty), и у меня есть некоторые проблемы с настройкой, работающие в командной строке и в RubyMine IDE одновременно.Конфигурация Ruby gem для RubyMine и командной строки
Я использую IDE JetBrains RubyMine, а иногда и команду, как через мой Rakefile. Если из основного проекта проекта я написал rake test
через командную строку, все тесты работают правильно (они запускаются и предоставляют результаты, один тест не проходит, но это еще одна история ...), а если я запускаю их из среды IDE (с Run/Debug конфигурации) у меня есть это сообщение:
1. B:/Programmi/gravaty/test/gravaty/locales/test_locales.rb:1
Fail to load: B:/Programmi/gravaty/test/gravaty/parsers/test_avatar.rb:1
Exception message: cannot load such file -- gravaty/test_parsable_duck_type
["B:/Programmi/gravaty/test/test_helper.rb:34:in `require'", "B:/Programmi/gravaty/test/test_helper.rb:34:in `<top (required)>'", "B:/Programmi/gravaty/test/gravaty/parsers/test_avatar.rb:15:in `require_relative'", "B:/Programmi/gravaty/test/gravaty/parsers/test_avatar.rb:15:in `<top (required)>'", "C:/Program Files (x86)/JetBrains/RubyMine 6.0.3/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:51:in `require'", "C:/Program Files (x86)/JetBrains/RubyMine 6.0.3/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:51:in `block in require_all_test_scripts'", "C:/Program Files (x86)/JetBrains/RubyMine 6.0.3/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:44:in `each'", "C:/Program Files (x86)/JetBrains/RubyMine 6.0.3/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:44:in `require_all_test_scripts'", "C:/Program Files (x86)/JetBrains/RubyMine 6.0.3/rb/testing/runner/tunit_or_minitest_in_folder_runner.rb:138:in `<top (required)>'", "-e:1:in `load'", "-e:1:in `<main>'"]
и так далее (по одному для каждого тестового файла) со всеми его StackTrace.
Чтобы легко настроить правильную (?) require
среды, я ставлю к заявлениям
lib_dir = File.dirname(__FILE__) '/../lib'
$:.unshift lib_dir unless $:.include?(lib_dir)
в начале моего test_helper.rb
файла и, кажется, работает из командной строки, но IDE не ценит , Учитывая эти заявления в test_helper.rb
,
require 'minitest/autorun'
require 'minitest/spec'
lib_dir = File.dirname(__FILE__) + '/../lib'
$:.unshift lib_dir unless $:.include?(lib_dir)
require 'gravaty'
require 'gravaty/constants'
require 'gravaty/parsers/avatar'
require 'gravaty/parsers/callback'
require 'gravaty/parsers/default'
require 'gravaty/parsers/force'
require 'gravaty/parsers/format'
require 'gravaty/parsers/pixelsize'
require 'gravaty/parsers/rating'
require 'gravaty/parsers/secure'
require 'gravaty/parsers/type'
require 'gravaty/test_parsable_duck_type'
В среде IDE подчеркивает все require 'gravaty/
заявления говорят Unresolved Ruby reference
. Я добавил свой каталог lib
в предпочтение Load Path для IDE, но ничего не меняется.
Есть ли способ заставить его работать в обеих средах? Должен ли я «вырезать» полный путь require
в каждом файле и в каждом заявлении require
?