Я развиваю драгоценный камень на данный момент. Вот как .gemspec
выглядит следующим образом:Почему Bundler.require не требует зависимостей?
gem.add_dependency 'activerecord', '~> 4.2'
...
gem.add_development_dependency 'rails', '4.2.5'
...
и вот мой Gemfile
:
source 'https://rubygems.org'
gemspec
Я настраиваю мой главный файл, lib/my_gem.rb
так:
module MyGem
module Lib
end
end
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
Bundler.require
Однако, если я начну bundle console
из моей папки gem, зависит от обстоятельств:
$ bundle console
Resolving dependencies...
irb(main):001:0> Rails
NameError: uninitialized constant Rails
...
irb(main):002:0> ActiveRecord
NameError: uninitialized constant ActiveRecord
...
Что я делаю неправильно?
Спасибо, что ответили! Я разрабатываю драгоценный камень, который можно использовать с Rails и без него, и вышеупомянутый вопрос связан с использованием не-Rails gem, поэтому я делаю 'Bundler.require'. Мне кажется странным, чтобы вручную требовать драгоценные камни, а не просто использовать Bundler. Почему это не лучшая практика? Кроме того, 'Bundler.require' потребует драгоценных камней из группы по умолчанию, и это группа, где' gemspec' помещает драгоценные камни 'gem_dependency'. Поэтому я не знаю, почему эти драгоценные камни должным образом не требуются Бундлером. – linkyndy