Initial import
This commit is contained in:
9
vendor/plugins/gemsonrails/init.rb
vendored
Normal file
9
vendor/plugins/gemsonrails/init.rb
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
gems = Dir[File.join(RAILS_ROOT, "vendor/gems/*")]
|
||||
if gems.any?
|
||||
gems.each do |dir|
|
||||
lib = File.join(dir, 'lib')
|
||||
$LOAD_PATH.unshift(lib) if File.directory?(lib)
|
||||
init_rb = File.join(dir, 'init.rb')
|
||||
require init_rb if File.file?(init_rb)
|
||||
end
|
||||
end
|
||||
64
vendor/plugins/gemsonrails/tasks/gems_freeze.rake
vendored
Normal file
64
vendor/plugins/gemsonrails/tasks/gems_freeze.rake
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
namespace :gems do
|
||||
desc "Freeze a RubyGem into this Rails application; init.rb will be loaded on startup."
|
||||
task :freeze do
|
||||
unless gem_name = ENV['GEM']
|
||||
puts <<-eos
|
||||
Parameters:
|
||||
GEM Name of gem (required)
|
||||
VERSION Version of gem to freeze (optional)
|
||||
ONLY RAILS_ENVs for which the GEM will be active (optional)
|
||||
|
||||
eos
|
||||
break
|
||||
end
|
||||
|
||||
# ONLY=development[,test] etc
|
||||
only_list = (ENV['ONLY'] || "").split(',')
|
||||
only_if_begin = only_list.size == 0 ? "" : <<-EOS
|
||||
ENV['RAILS_ENV'] ||= 'development'
|
||||
if %w[#{only_list.join(' ')}].include?(ENV['RAILS_ENV'])
|
||||
EOS
|
||||
only_if_end = only_list.size == 0 ? "" : "end"
|
||||
|
||||
require 'rubygems'
|
||||
Gem.manage_gems
|
||||
Gem::CommandManager.new
|
||||
|
||||
gem = (version = ENV['VERSION']) ?
|
||||
Gem.cache.search(gem_name, "= #{version}").first :
|
||||
Gem.cache.search(gem_name).sort_by { |g| g.version }.last
|
||||
|
||||
version ||= gem.version.version rescue nil
|
||||
|
||||
unpack_command_class = Gem::UnpackCommand rescue nil || Gem::Commands::UnpackCommand
|
||||
unless gem && path = unpack_command_class.new.get_path(gem_name, version)
|
||||
raise "No gem #{gem_name} #{version} is installed. Do 'gem list #{gem_name}' to see what you have available."
|
||||
end
|
||||
|
||||
gems_dir = File.join(RAILS_ROOT, 'vendor', 'gems')
|
||||
mkdir_p gems_dir, :verbose => false if !File.exists?(gems_dir)
|
||||
|
||||
target_dir = ENV['TO'] || File.basename(path).sub(/\.gem$/, '')
|
||||
mkdir_p "vendor/gems/#{target_dir}", :verbose => false
|
||||
|
||||
chdir gems_dir, :verbose => false do
|
||||
mkdir_p target_dir, :verbose => false
|
||||
abs_target_dir = File.join(Dir.pwd, target_dir)
|
||||
|
||||
(gem = Gem::Installer.new(path)).unpack(abs_target_dir)
|
||||
chdir target_dir, :verbose => false do
|
||||
if !File.exists?('init.rb')
|
||||
File.open('init.rb', 'w') do |file|
|
||||
file << <<-eos
|
||||
#{only_if_begin}
|
||||
require File.join(File.dirname(__FILE__), 'lib', '#{gem_name}')
|
||||
#{only_if_end}
|
||||
eos
|
||||
end
|
||||
end
|
||||
end
|
||||
puts "Unpacked #{gem_name} #{version} to '#{target_dir}'"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
79
vendor/plugins/gemsonrails/tasks/gems_link.rake
vendored
Normal file
79
vendor/plugins/gemsonrails/tasks/gems_link.rake
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
namespace :gems do
|
||||
desc "Link a RubyGem into this Rails application; init.rb will be loaded on startup."
|
||||
task :link do
|
||||
unless gem_name = ENV['GEM']
|
||||
puts <<-eos
|
||||
Parameters:
|
||||
GEM Name of gem (required)
|
||||
ONLY RAILS_ENVs for which the GEM will be active (optional)
|
||||
|
||||
eos
|
||||
break
|
||||
end
|
||||
|
||||
# ONLY=development[,test] etc
|
||||
only_list = (ENV['ONLY'] || "").split(',')
|
||||
only_if_begin = only_list.size == 0 ? "" : <<-EOS
|
||||
ENV['RAILS_ENV'] ||= 'development'
|
||||
if %w[#{only_list.join(' ')}].include?(ENV['RAILS_ENV'])
|
||||
EOS
|
||||
only_if_end = only_list.size == 0 ? "" : "end"
|
||||
|
||||
require 'rubygems'
|
||||
Gem.manage_gems
|
||||
|
||||
gem = Gem.cache.search(gem_name).sort_by { |g| g.version }.last
|
||||
version ||= gem.version.version rescue nil
|
||||
|
||||
unpack_command_class = Gem::UnpackCommand rescue nil || Gem::Commands::UnpackCommand
|
||||
unless gem && path = unpack_command_class.new.get_path(gem_name, version)
|
||||
raise "No gem #{gem_name} is installed. Try 'gem install #{gem_name}' to install the gem."
|
||||
end
|
||||
|
||||
gems_dir = File.join(RAILS_ROOT, 'vendor', 'gems')
|
||||
mkdir_p gems_dir, :verbose => false if !File.exists?(gems_dir)
|
||||
|
||||
target_dir = ENV['TO'] || gem.name
|
||||
mkdir_p "vendor/gems/#{target_dir}"
|
||||
|
||||
chdir gems_dir, :verbose => false do
|
||||
mkdir_p target_dir + '/tasks', :verbose => false
|
||||
chdir target_dir, :verbose => false do
|
||||
File.open('init.rb', 'w') do |file|
|
||||
file << <<-eos
|
||||
#{only_if_begin}
|
||||
require 'rubygems'
|
||||
Gem.manage_gems
|
||||
gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
|
||||
if gem.autorequire
|
||||
require gem.autorequire
|
||||
else
|
||||
require '#{gem.name}'
|
||||
end
|
||||
#{only_if_end}
|
||||
eos
|
||||
end
|
||||
File.open(File.join('tasks', 'load_tasks.rake'), 'w') do |file|
|
||||
file << <<-eos
|
||||
# This file does not include any Rake files, but loads up the
|
||||
# tasks in the /vendor/gems/ folders
|
||||
#{only_if_begin}
|
||||
require 'rubygems'
|
||||
Gem.manage_gems
|
||||
gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
|
||||
raise \"Gem '#{gem.name}' is not installed\" if gem.nil?
|
||||
path = gem.full_gem_path
|
||||
Dir[File.join(path, "/**/tasks/**/*.rake")].sort.each { |ext| load ext }
|
||||
#{only_if_end}
|
||||
eos
|
||||
end
|
||||
puts "Linked #{gem_name} (currently #{version}) via 'vendor/gems/#{target_dir}'"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
task :unfreeze do
|
||||
raise "No gem specified" unless gem_name = ENV['GEM']
|
||||
Dir["vendor/gems/#{gem_name}-*"].each { |d| rm_rf d }
|
||||
end
|
||||
end
|
||||
15
vendor/plugins/gemsonrails/tasks/gems_unfreeze.rake
vendored
Normal file
15
vendor/plugins/gemsonrails/tasks/gems_unfreeze.rake
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace :gems do
|
||||
desc "Unfreeze/unlink a RubyGem from this Rails application"
|
||||
task :unfreeze do
|
||||
unless gem_name = ENV['GEM']
|
||||
puts <<-eos
|
||||
Parameters:
|
||||
GEM Name of gem (required)
|
||||
|
||||
|
||||
eos
|
||||
break
|
||||
end
|
||||
Dir["vendor/gems/#{gem_name}*"].each { |d| rm_rf d }
|
||||
end
|
||||
end
|
||||
10
vendor/plugins/gemsonrails/tasks/load_tasks_in_gems.rake
vendored
Normal file
10
vendor/plugins/gemsonrails/tasks/load_tasks_in_gems.rake
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# This file does not include any Rake files, but loads up the
|
||||
# tasks in the /vendor/gems/ folders
|
||||
|
||||
Dir[File.join(RAILS_ROOT, "vendor/gems/*/**/tasks/**/*.rake")].sort.each do |ext|
|
||||
begin
|
||||
load ext
|
||||
rescue
|
||||
puts $!
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user