A test case for Gem::Installer.
the path to a built gem from @spec
the path to a built gem from @user_spec
a Gem::Installer for the @spec that installs into @gemhome
a Gem::Installer for the @user_spec that installs into Gem.user_dir
# File rubygems/installer_test_case.rb, line 90
def setup
super
@spec = quick_gem 'a' do |spec|
util_make_exec spec
end
@user_spec = quick_gem 'b' do |spec|
util_make_exec spec
end
util_build_gem @spec
util_build_gem @user_spec
@gem = @spec.cache_file
@user_gem = @user_spec.cache_file
@installer = util_installer @spec, @gemhome
@user_installer = util_installer @user_spec, Gem.user_dir, :user
end
The path where installed executables live
# File rubygems/installer_test_case.rb, line 124
def util_inst_bindir
File.join @gemhome, "bin"
end
Creates an installer for spec that will install into
gem_home. If user is true a user-install will be
performed.
# File rubygems/installer_test_case.rb, line 189
def util_installer(spec, gem_home, user=false)
Gem::Installer.new(spec.cache_file,
:install_dir => gem_home,
:user_install => user)
end
Adds an executable named “executable” to spec with the given
shebang.
The executable is also written to the bin dir in @tmpdir and the installed
gem directory for spec.
# File rubygems/installer_test_case.rb, line 134
def util_make_exec(spec = @spec, shebang = "#!/usr/bin/ruby")
spec.executables = %w[executable]
spec.files << 'bin/executable'
exec_path = spec.bin_file "executable"
write_file exec_path do |io|
io.puts shebang
end
bin_path = File.join @tempdir, "bin", "executable"
write_file bin_path do |io|
io.puts shebang
end
end
Builds the @spec gem and returns an installer for it. The built gem includes:
bin/executable lib/code.rb ext/a/mkrf_conf.rb
# File rubygems/installer_test_case.rb, line 157
def util_setup_gem(ui = @ui) # HACK fix use_ui to make this automatic
@spec.files << File.join('lib', 'code.rb')
@spec.extensions << File.join('ext', 'a', 'mkrf_conf.rb')
Dir.chdir @tempdir do
FileUtils.mkdir_p 'bin'
FileUtils.mkdir_p 'lib'
FileUtils.mkdir_p File.join('ext', 'a')
File.open File.join('bin', 'executable'), 'w' do |f|
f.puts "raise 'ran executable'"
end
File.open File.join('lib', 'code.rb'), 'w' do |f| f.puts '1' end
File.open File.join('ext', 'a', 'mkrf_conf.rb'), 'w' do |f|
f << <<-EOF
File.open 'Rakefile', 'w' do |rf| rf.puts "task :default" end
EOF
end
use_ui ui do
FileUtils.rm_f @gem
@gem = Gem::Package.build @spec
end
end
@installer = Gem::Installer.new @gem
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.