2013-06-27 2 views
2

Вот соответствующая часть моей gemspec:Трэвис не может в настоящее время Rails 4 был выпущен

spec.add_development_dependency "bundler", "~> 1.3" 
spec.add_development_dependency "rake" 
spec.add_development_dependency "rspec", "~> 2.13.0" 
spec.add_dependency "addressable" 
spec.add_dependency "activesupport", "> 3.0.11" 

Трэвис неудачу рубин 1.8.7, потому что он пытается установить ActiveSupport 4,0, но Rails 4 не поддерживает Ruby 1.8 +0,7. Я боюсь, что это может быть проблемой, когда пользователи пытаются использовать драгоценный камень, даже если он может быть совместим с 1.8.7.

Как это исправить, а также поддерживать поддержку Rails 4? Я не хочу использовать "~> 3.0.11" на моем gemspec.

ответ

0

Я хотел бы предложить изменения содержимого вашего gemspec на что-то вроде:

if RUBY_VERSION < "1.9" 
    spec.add_dependency "activesupport", "~> 3.0.11" 
    else 
    spec.add_dependency "activesupport", "> 3.0.11" 
    end 

Технически это же использовать синтаксис, который вы не хотите, но это не так в стесненном образом, и не должны отрицательно сказываться пользователи. Фактически, это только влияет на процесс сборки драгоценного камня и заставит Трависа использовать ограниченную версию зависимости (поскольку конечный пользователь должен был бы в любом случае) без размещения любых ограничений на камне в целом - при условии, что вы пакет и выпустить драгоценный камень, используя новейший Ruby.

0

Я предлагаю использовать жемчужину appraisal для этого. Она позволяет создавать несколько Gemfiles для проекта, а затем вы можете указать gemfiles, как это:

language: ruby 
rvm: 
    - 1.9.3 
    - 2.0.0 
gemfiles: 
    - gemfile/3.0.gemfile 
    - gemfile/4.0.gemfile 
matrix: 
    include: 
    - rvm: 1.8.7 
     gemfile: gemfile/3.0.gemfile 

Это создаст пять сборки:

  • 1.9.3 + 3,0
  • 2.0.0 + 3,0
  • 1.9.3 + 4,0
  • 2.0.0 + 4,0
  • 1.8.7 + 3,0

Надеюсь, что-то подобное поможет.