1

パス オプションを使用して、環境内のどの gem がソースから読み込まれたかを検出する方法はありますか?

すなわち:

# Gemfile
source 'rubygems.org'

gem 'rails'
gem 'rails-extension', path: '~/code/rails-extension'

.

# some_script.rb
require 'rubygems'

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)

require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) 

if defined?(Bundler) and not Bundler.sourced_gems.empty?
  puts "Using gems from source. Not safe to push to origin."
end      
4

1 に答える 1

1

Bundlerの Path クラスを使用すると、次のように処理されます。

require 'rubygems'

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)

require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])


Gem.loaded_specs.values.map { |g| puts "#{g.name} from #{g.source}. Not safe to push to origin." if g.source.instance_of? Bundler::Source::Path }
于 2013-05-16T08:06:17.670 に答える