[Rubygems-developers] Customizing rubygems via #{RUBY_ENGINE}.rb

Eric Hodel drbrain at segment7.net
Wed Jun 25 19:50:58 EDT 2008


On Jun 25, 2008, at 14:53 PM, Vladimir Sizikov wrote:
> On Wed, Jun 25, 2008 at 11:46 PM, Eric Hodel <drbrain at segment7.net>  
> wrote:
>
>>> 1. gem install and gem update commands. I'd like to customize the
>>> default options.
>>> More specifically, to enable env_shebang option.
>>
>> I think Gem::ConfigFile can be changed to set this as default.   
>> I'll explore
>> it.
>
> The ideal case would be to have zero "hacks/patches" over official
> rubygems sources, so if there is a way to provide command defaults and
> not modifying
> the official sources, that would be the best.
>
> I think #{RUBY_ENGINE}.rb is a good start.

Ok, I added Gem::ConfigFile::OPERATING_SYSTEM_DEFAULTS and  
PLATFORM_DEFAULTS.

Add:

Gem::ConfigFile::PLATFORM_DEFAULTS['install'] = '--env-shebang'
Gem::ConfigFile::PLATFORM_DEFAULTS['update'] = '--env-shebang'

I think this will work for `gem update`, but I'm not sure.  Can you  
let me know if it doesn't work?

(In the future, Gem::InstallUpdateOptions needs to be connected into  
these common options, I'm not sure how to do that yet.)

>>> 2. installer.rb has shebang(bin_file_name) method that works not
>>> ideally with JRuby on Windows,
>>> and I'd like to provide customized version of that.
>>
>> How do you want to change shebang?  Maybe we can make the change in  
>> the
>> installer instead.
>
> In JRuby, the main executable name on Windows is jruby.bat. If you
> have the shebang:
> #!/usr/bin/env jruby.bat
>
> That won't work on Cygwin, but
> #!/usr/bin/env jruby  - will work
>
> So, we currently modify that shebang method to return the  
> appropriate one.

I saw your paste (http://pastie.org/222204) with the change you're  
making to Installer.  Do you think an overridable  
Gem.ruby_executable_name would be sufficient? By default it would be  
Gem::ConfigMap[:ruby_install_name].


More information about the Rubygems-developers mailing list