Forum: Ruby gem issue

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
4d5b5dd4e263d780a5dfe7ac8b8ac98c?d=identicon&s=25 Tim Pease (Guest)
on 2007-02-03 22:39
(Received via mailing list)
I'm working on Ruby program that will have a resource directory for
storing configuration, logging information, etc.  I've used the
__END__ and DATA  trick in my main ruby program to store some sane
defaults for the resources directory if this is the first time the
program has been run by a user.

#!/usr/bin/env ruby

require 'mylib'

unless File.exist?(ENV['HOME'] + '.myrc')
  File.open(ENV['HOME'] + '.myrc/defaults', 'w') do |fd|
    fd.write DATA.readlines
  end
end

# use defaults here

__END__
hash_key_1 : 1
hash_key_2 : 2
etc              : and some more


This works very well when my application is run directly.  But when
installed via gems a new ruby script is created that loads my
executable script :(  This causes the __END__ keyword in my ruby
script to stop working, and the DATA constant is not set.

Is there a way to tell the gem installer "Hey, quit being so smart and
just install my executable file without wrappering it with your own
ruby script".

Blessings,
TwP
45196398e9685000d195ec626d477f0e?d=identicon&s=25 Trans (Guest)
on 2007-02-04 00:02
(Received via mailing list)
On Feb 3, 4:38 pm, "Tim Pease" <tim.pe...@gmail.com> wrote:
> unless File.exist?(ENV['HOME'] + '.myrc')
> etc              : and some more
>
> This works very well when my application is run directly.  But when
> installed via gems a new ruby script is created that loads my
> executable script :(  This causes the __END__ keyword in my ruby
> script to stop working, and the DATA constant is not set.
>
> Is there a way to tell the gem installer "Hey, quit being so smart and
> just install my executable file without wrappering it with your own
> ruby script".

Something like:

  File.read(__FILE__).split("__END__").last

But why not store it in a separate config file?

T.
4d5b5dd4e263d780a5dfe7ac8b8ac98c?d=identicon&s=25 Tim Pease (Guest)
on 2007-02-04 17:23
(Received via mailing list)
On 2/3/07, Trans <transfire@gmail.com> wrote:
> >
> > __END__
> > just install my executable file without wrappering it with your own
> > ruby script".
>
> Something like:
>
>   File.read(__FILE__).split("__END__").last
>
> But why not store it in a separate config file?
>

I'm trying to be clever in the way I bootstrap this config file into
existence.  Using __END__ and DATA seemed very Rubyish and clever.
Alas that gems are smarter than I am.

I just dumped it into a here doc in the file.  Just as effective.

There is a way to tell gem not to create a wrapper, but the user has
to do it when they install the gem ...

gem install --no-wrapper mygem

However, gem is not honoring the executable bit in the file permission
:/  So the symbolic link to my executable still does not work because
the executable is no longer executable <sigh>.

TwP
This topic is locked and can not be replied to.