i have this
jib:~/eg/ruby/rubyforge/rubyforge-0.1.1 > file bin//rubyforge
bin//rubyforge: a ruby script text executable
jib:~/eg/ruby/rubyforge/rubyforge-0.1.1 > cat ./gemspec.rb
lib, version = File::basename(File::dirname(File::expand_path(__FILE__))).split %r/-/, 2
require 'rubygems'
spec = Gem::Specification.new do |s|
s.name = lib
s.version = version
s.platform = Gem::Platform::RUBY
s.summary = lib
s.files = Dir["lib/*"] + Dir["bin/*"]
s.require_path = "lib"
s.autorequire = lib
s.has_rdoc = File::exist? "doc"
s.test_suite_file = "test/#{ lib }.rb" if File::directory? "test"
s.author = "Ara T. Howard"
s.email = "ara.t.howard@noaa.gov"
s.homepage = "http://codeforpeople.com/lib/ruby/#{ lib }/"
end
and this gem, apparently, does not install a 'rubyforge' script into the system
bin dir. why not?
regards.
-a
···
--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama
Try adding some additional spec items to your gemspec.
The following works for me:
s.bindir = "." # yours looks to be bin
s.executables = [ "weft-qda.rb" ] # or whatever your main script is called
s.default_executable = "weft-qda.rb"
hth
alex
···
ara.t.howard@noaa.gov wrote:
and this gem, apparently, does not install a 'rubyforge' script into the system
bin dir. why not?
unknown wrote:
i have this
jib:~/eg/ruby/rubyforge/rubyforge-0.1.1 > file bin//rubyforge
bin//rubyforge: a ruby script text executable
jib:~/eg/ruby/rubyforge/rubyforge-0.1.1 > cat ./gemspec.rb
lib, version =
File::basename(File::dirname(File::expand_path(__FILE__))).split %r/-/,
2
require 'rubygems'
spec = Gem::Specification.new do |s|
s.name = lib
s.version = version
s.platform = Gem::Platform::RUBY
s.summary = lib
s.files = Dir["lib/*"] + Dir["bin/*"]
+ s.bindir = "bin"
+ s.executables = ["rubyforge"]
s.require_path = "lib"
s.autorequire = lib
s.has_rdoc = File::exist? "doc"
s.test_suite_file = "test/#{ lib }.rb" if File::directory? "test"
s.author = "Ara T. Howard"
s.email = "ara.t.howard@noaa.gov"
s.homepage = "http://codeforpeople.com/lib/ruby/#\{ lib }/"
end
and this gem, apparently, does not install a 'rubyforge' script into the
system
bin dir. why not?
Try adding ...'
s.bindir = "bin"
s.executables = ["rubyforge"]
Also, I recommend dropping the autorequire as well.
-- Jim Weirich
···
--
Posted via http://www.ruby-forum.com/\.
thanks.
any reason why
s.executables
would not a default value of
Dir::glob(File::join("#{ bindir }", "*")) if File::exist?(bindir)
??
i actually did try that btw. the reason it didn't work is because the bindir
installed to is not in my path. i have something like this setup
/usr/local/bin/ruby -> /usr/local/ruby-1.8.4/bin/ruby
/usr/local/ruby-1.8.4/*
/usr/local/ruby-1.8.3/*
/usr/local/ruby-1.8.2/*
/usr/local/ruby-1.8.1/*
etc.
so here a
gem install rubyforge-0.0.0.gem
installs into
/usr/local/bin/ruby-1.8.4/bin/rubyforge
which is not in my path.
a while back i posted this tiny patch the the top-level gem script
···
On Tue, 14 Feb 2006, Jim Weirich wrote:
unknown wrote:
i have this
jib:~/eg/ruby/rubyforge/rubyforge-0.1.1 > file bin//rubyforge
bin//rubyforge: a ruby script text executable
jib:~/eg/ruby/rubyforge/rubyforge-0.1.1 > cat ./gemspec.rb
lib, version =
File::basename(File::dirname(File::expand_path(__FILE__))).split %r/-/,
2
require 'rubygems'
spec = Gem::Specification.new do |s|
s.name = lib
s.version = version
s.platform = Gem::Platform::RUBY
s.summary = lib
s.files = Dir["lib/*"] + Dir["bin/*"]
+ s.bindir = "bin"
+ s.executables = ["rubyforge"]
s.require_path = "lib"
s.autorequire = lib
s.has_rdoc = File::exist? "doc"
s.test_suite_file = "test/#{ lib }.rb" if File::directory? "test"
s.author = "Ara T. Howard"
s.email = "ara.t.howard@noaa.gov"
s.homepage = "http://codeforpeople.com/lib/ruby/#\{ lib }/"
end
and this gem, apparently, does not install a 'rubyforge' script into the
system
bin dir. why not?
Try adding ...'
s.bindir = "bin"
s.executables = ["rubyforge"]
#
# munge rbconfig from any command line or environment kv pair
#
kvs =
re = %r/^ \s* ([^=\s]+) \s* = \s* ([^\s]+) \s* $/x
args.delete_if{|arg| (m = re.match(arg)) and (kvs << m.to_a.last(2))}
ENV::each{|k,v| (k =~ %r/^GEM_/) and (kvs << [k.delete('GEM_'), v])}
unless kvs.empty?
require 'rbconfig'
kvs.each{|k,v| Config::CONFIG[k] = v}
end
which allows setting of __any__ rbconfig value on the command line. this
allows one to do this:
gem install rubyforge-0.0.0.gem bindir=/usr/local/bin/
and other fine grained controls of any gem install. any objection to adding
such a patch to gems? as it stands now i cannot use the gem command to manage
anything but libs on my systems - commands simply disappear into non PATH
directories.
regards.
-a
--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama
i should have included to complete patched 'gem' script:
#!/usr/bin/env ruby
require 'rubygems'
Gem.manage_gems
required_version = Gem::Version::Requirement.new(">= 1.8.0")
unless required_version.satisfied_by?(Gem::Version.new(RUBY_VERSION))
puts "Expected Ruby Version #{required_version}, was #{RUBY_VERSION}"
exit(1)
end
# We need to preserve the original ARGV to use for passing gem options
# to source gems. If there is a -- in the line, strip all options after
# it...its for the source building process.
args = !ARGV.include?("--") ? ARGV.clone : ARGV[0...ARGV.index("--")]
···
On Tue, 14 Feb 2006, Jim Weirich wrote:
#
# munge rbconfig from any command line or environment kv pair
#
kvs = []
re = %r/^ \s* ([^=\s]+) \s* = \s* ([^\s]+) \s* $/x
args.delete_if{|arg| (m = re.match(arg)) and (kvs << m.to_a.last(2))}
ENV::each{|k,v| (k =~ %r/^GEM_/) and (kvs << [k.delete('GEM_'), v])}
unless kvs.empty?
require 'rbconfig'
kvs.each{|k,v| Config::CONFIG[k] = v}
end
Gem::GemRunner.new.run(args)
not that env settings affect the install as well. so one can do
GEM_BINDIR=/usr/local/bin gem install somelib.gem
regards.
-a
--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama