Making config.gem in Rails 2.3.x allow you to install from a direct url or the local filesystem
If you are on Rails 2.3.x (pre-Bundler) and want to organize some of your shared functionality into gems, but they are for internal use only, you could set-up a private gem server and point the :source at this server. And then you could deal with authentication, and then…
Or as a quick hack you could just allow for config.gem to reference the gemfile directly, which would then mean ‘rake gems:install’ would work, even if the gem were stored locally, or on a file-server, etc. Also useful as you could then just point at a .gem file on github.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ## require in config/environment.rb before init starts #require ‘config/add_explicit_path_to_config_gem’ #Rails::Initializer.run do |config| #config.gem ‘my_gem’, :version => ‘0.0.1’, :explicit_path => “#{RAILS_ROOT}/vendor/local_gemfiles/my_gem-0.0.1.gem” #or #config.gem ‘my_gem’, :version => ‘0.0.1’, :explicit_path => “http://github.com/myname/myrepo/raw/master/mygem.gem” #or module Rails class GemDependency def initialize_with_explicit_path(name, options = {}) @explicit_path = options[:explicit_path] initialize_without_explicit_path(name, options = {}) end alias_method_chain :initialize, :explicit_path private def install_command cmd = %w(install) « (@explicit_path || name) cmd « “—version” « %(“#{requirement.to_s}”) if requirement cmd « “—source” « @source if @source cmd end end end |