我正在開發一個寶石。這裏的.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
從我的寶石文件夾中,不需要依賴關係:
$ bundle console
Resolving dependencies...
irb(main):001:0> Rails
NameError: uninitialized constant Rails
...
irb(main):002:0> ActiveRecord
NameError: uninitialized constant ActiveRecord
...
我在做什麼錯?
感謝您的迴應!我正在開發一個可以使用和不使用Rails的gem,上面的問題與非Rails gem使用有關,這就是爲什麼我在使用'Bundler.require'。我覺得手動需要寶石而不是僅僅使用Bundler是很奇怪的。爲什麼這不是最佳做法?另外,'Bundler.require'將需要來自默認組的gems,這是'gemspec'放置'gem_dependency' gem的組。所以我不知道爲什麼這些寶石沒有被Bundler正確要求。 – linkyndy