gemsonrails 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +0 -0
- data/README +3 -0
- data/Rakefile +79 -0
- data/bin/gemsonrails +53 -0
- data/lib/gemsonrails/version.rb +9 -0
- data/lib/gemsonrails.rb +2 -0
- data/templates/init.rb +9 -0
- data/templates/tasks_gems_freeze.rake +32 -0
- data/templates/tasks_gems_link.rake +54 -0
- data/templates/tasks_gems_unfreeze.rake +7 -0
- data/templates/tasks_load_tasks_in_gems.rake +4 -0
- data/test/all_tests.rb +1 -0
- data/test/gems_to_rails_test.rb +11 -0
- data/test/test_helper.rb +2 -0
- metadata +70 -0
data/CHANGELOG
ADDED
File without changes
|
data/README
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/packagetask'
|
5
|
+
require 'rake/gempackagetask'
|
6
|
+
require 'rake/rdoctask'
|
7
|
+
require 'rake/contrib/rubyforgepublisher'
|
8
|
+
require 'fileutils'
|
9
|
+
include FileUtils
|
10
|
+
require File.join(File.dirname(__FILE__), 'lib', 'gemsonrails', 'version')
|
11
|
+
|
12
|
+
AUTHOR = "Dr Nic Williams"
|
13
|
+
EMAIL = "drnicwilliams@gmail.com"
|
14
|
+
DESCRIPTION = "Link or freeze RubyGems into your rails apps, instead of plugins"
|
15
|
+
HOMEPATH = 'http://gemsonrails.rubyforge.org'
|
16
|
+
BIN_FILES = %w( gemsonrails )
|
17
|
+
|
18
|
+
|
19
|
+
NAME = "gemsonrails"
|
20
|
+
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
21
|
+
VERS = ENV['VERSION'] || (GemsOnRails::VERSION::STRING + (REV ? ".#{REV}" : ""))
|
22
|
+
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
23
|
+
RDOC_OPTS = ['--quiet', '--title', "gemsonrails documentation",
|
24
|
+
"--opname", "index.html",
|
25
|
+
"--line-numbers",
|
26
|
+
"--main", "README",
|
27
|
+
"--inline-source"]
|
28
|
+
|
29
|
+
desc "Packages up gemsonrails gem."
|
30
|
+
task :default => [:test]
|
31
|
+
task :package => [:clean]
|
32
|
+
|
33
|
+
task :test do
|
34
|
+
require File.dirname(__FILE__) + '/test/all_tests.rb'
|
35
|
+
end
|
36
|
+
|
37
|
+
spec =
|
38
|
+
Gem::Specification.new do |s|
|
39
|
+
s.name = NAME
|
40
|
+
s.version = VERS
|
41
|
+
s.platform = Gem::Platform::RUBY
|
42
|
+
s.has_rdoc = true
|
43
|
+
s.extra_rdoc_files = ["README", "CHANGELOG"]
|
44
|
+
s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
|
45
|
+
s.summary = DESCRIPTION
|
46
|
+
s.description = DESCRIPTION
|
47
|
+
s.author = AUTHOR
|
48
|
+
s.email = EMAIL
|
49
|
+
s.homepage = HOMEPATH
|
50
|
+
s.executables = BIN_FILES
|
51
|
+
s.bindir = "bin"
|
52
|
+
s.require_path = "lib"
|
53
|
+
|
54
|
+
#s.add_dependency('activesupport', '>=1.3.1')
|
55
|
+
#s.required_ruby_version = '>= 1.8.2'
|
56
|
+
|
57
|
+
s.files = %w(README CHANGELOG Rakefile) +
|
58
|
+
Dir.glob("{bin,doc,test,lib,templates,extras,website,script}/**/*") +
|
59
|
+
Dir.glob("ext/**/*.{h,c,rb}") +
|
60
|
+
Dir.glob("examples/**/*.rb") +
|
61
|
+
Dir.glob("tools/*.rb")
|
62
|
+
|
63
|
+
# s.extensions = FileList["ext/**/extconf.rb"].to_a
|
64
|
+
end
|
65
|
+
|
66
|
+
Rake::GemPackageTask.new(spec) do |p|
|
67
|
+
#p.need_tar = true
|
68
|
+
p.gem_spec = spec
|
69
|
+
end
|
70
|
+
|
71
|
+
task :install do
|
72
|
+
name = "#{NAME}-#{VERS}.gem"
|
73
|
+
sh %{rake package}
|
74
|
+
sh %{sudo gem install pkg/#{name}}
|
75
|
+
end
|
76
|
+
|
77
|
+
task :uninstall => [:clean] do
|
78
|
+
sh %{sudo gem uninstall #{NAME}}
|
79
|
+
end
|
data/bin/gemsonrails
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require 'active_support'
|
5
|
+
require 'optparse'
|
6
|
+
require 'gemsonrails'
|
7
|
+
|
8
|
+
templates = File.dirname(__FILE__) + '/../templates/'
|
9
|
+
|
10
|
+
OPTIONS = {
|
11
|
+
:rails_root => '.'
|
12
|
+
}
|
13
|
+
parser = OptionParser.new do |opts|
|
14
|
+
opts.banner = <<BANNER
|
15
|
+
Enable your Rails application to link and freeze
|
16
|
+
RubyGems just like Rails Plugins. Enjoy explicit
|
17
|
+
version numbers, gem dependencies, and more!
|
18
|
+
|
19
|
+
Usage: #{File.basename($0)} [--apply-to <rails app path>]
|
20
|
+
|
21
|
+
Options are:
|
22
|
+
BANNER
|
23
|
+
opts.separator ""
|
24
|
+
opts.on("-a", "--apply-to=PATH", String,
|
25
|
+
"Root path of your rails application",
|
26
|
+
"Default: .") { |OPTIONS[:rails_root]| }
|
27
|
+
opts.parse!(ARGV)
|
28
|
+
end
|
29
|
+
|
30
|
+
plugins = File.join(OPTIONS[:rails_root], 'vendor', 'plugins')
|
31
|
+
gems_path = File.join(plugins, 'gemsonrails')
|
32
|
+
tasks_path = File.join(gems_path, 'tasks')
|
33
|
+
task_templates = Dir[File.join(templates, '*.rake')]
|
34
|
+
|
35
|
+
FileUtils.rm_rf gems_path
|
36
|
+
|
37
|
+
Dir.mkdir gems_path
|
38
|
+
Dir.chdir gems_path do
|
39
|
+
template = File.open(templates + 'init.rb','r') {|f| f.readlines.join}
|
40
|
+
File.open('init.rb', 'w') {|file| file << template }
|
41
|
+
end
|
42
|
+
|
43
|
+
Dir.mkdir tasks_path
|
44
|
+
Dir.chdir tasks_path do
|
45
|
+
task_templates.each do |template_name|
|
46
|
+
task_name = File.basename(template_name).sub(/\Atasks_/,'')
|
47
|
+
template = File.open(template_name,'r') {|f| f.readlines.join}
|
48
|
+
File.open(task_name, 'w') {|file| file << template }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
puts "Installed gems_to_rails #{GemsOnRails::VERSION::STRING} to #{gems_path}"
|
53
|
+
|
data/lib/gemsonrails.rb
ADDED
data/templates/init.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
namespace :gems do
|
2
|
+
desc "Freeze a RubyGem into this Rails application; init.rb will be loaded on startup."
|
3
|
+
task :freeze do
|
4
|
+
raise "No gem specified" unless gem_name = ENV['GEM']
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
Gem.manage_gems
|
8
|
+
|
9
|
+
gem = (version = ENV['VERSION']) ?
|
10
|
+
Gem.cache.search(gem_name, "= #{version}").first :
|
11
|
+
Gem.cache.search(gem_name).sort_by { |g| g.version }.last
|
12
|
+
|
13
|
+
version ||= gem.version.version rescue nil
|
14
|
+
|
15
|
+
unless gem && path = Gem::UnpackCommand.new.get_path(gem_name, version)
|
16
|
+
raise "No gem #{gem_name} #{version} is installed. Do 'gem list #{gem_name}' to see what you have available."
|
17
|
+
end
|
18
|
+
|
19
|
+
gems_dir = File.join(RAILS_ROOT, 'vendor', 'gems')
|
20
|
+
mkdir_p gems_dir, :verbose => false if !File.exists?(gems_dir)
|
21
|
+
|
22
|
+
target_dir = ENV['TO'] || File.basename(path).sub(/\.gem$/, '')
|
23
|
+
rm_rf "vendor/gems/#{target_dir}", :verbose => false
|
24
|
+
|
25
|
+
chdir gems_dir, :verbose => false do
|
26
|
+
mkdir_p target_dir, :verbose => false
|
27
|
+
Gem::Installer.new(path).unpack(target_dir)
|
28
|
+
puts "Unpacked #{gem_name} #{version} to '#{target_dir}'"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
namespace :gems do
|
2
|
+
desc "Link a RubyGem into this Rails application; init.rb will be loaded on startup."
|
3
|
+
task :link do
|
4
|
+
raise "No gem specified" unless gem_name = ENV['GEM']
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
Gem.manage_gems
|
8
|
+
|
9
|
+
gem = Gem.cache.search(gem_name).sort_by { |g| g.version }.last
|
10
|
+
version ||= gem.version.version rescue nil
|
11
|
+
|
12
|
+
unless gem && path = Gem::UnpackCommand.new.get_path(gem_name, version)
|
13
|
+
raise "No gem #{gem_name} #{version} is installed. Do 'gem list #{gem_name}' to see what you have available."
|
14
|
+
end
|
15
|
+
|
16
|
+
gems_dir = File.join(RAILS_ROOT, 'vendor', 'gems')
|
17
|
+
mkdir_p gems_dir, :verbose => false if !File.exists?(gems_dir)
|
18
|
+
|
19
|
+
target_dir = ENV['TO'] || gem.name
|
20
|
+
rm_rf "vendor/gems/#{target_dir}", :verbose => false
|
21
|
+
|
22
|
+
chdir gems_dir, :verbose => false do
|
23
|
+
mkdir_p target_dir + '/tasks', :verbose => false
|
24
|
+
chdir target_dir, :verbose => false do
|
25
|
+
File.open('init.rb', 'w') do |file|
|
26
|
+
file << <<-eos
|
27
|
+
require 'rubygems'
|
28
|
+
Gem.manage_gems
|
29
|
+
gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
|
30
|
+
require gem.autorequire if gem.autorequire
|
31
|
+
eos
|
32
|
+
end
|
33
|
+
File.open(File.join('tasks', 'load_tasks.rake'), 'w') do |file|
|
34
|
+
file << <<-eos
|
35
|
+
# This file does not include any Rake files, but loads up the
|
36
|
+
# tasks in the /vendor/gems/ folders
|
37
|
+
require 'rubygems'
|
38
|
+
Gem.manage_gems
|
39
|
+
gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
|
40
|
+
version ||= gem.version.version
|
41
|
+
path = Gem::UnpackCommand.new.get_path(gem.name, version)
|
42
|
+
Dir[File.join(path, "/**/tasks/**/*.rake")].sort.each { |ext| load ext }
|
43
|
+
eos
|
44
|
+
end
|
45
|
+
puts "Linked #{gem_name} (currently #{version}) via 'vendor/gems/#{target_dir}'"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
task :unfreeze do
|
51
|
+
raise "No gem specified" unless gem_name = ENV['GEM']
|
52
|
+
Dir["vendor/gems/#{gem_name}-*"].each { |d| rm_rf d }
|
53
|
+
end
|
54
|
+
end
|
data/test/all_tests.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir['**/*_test.rb'].each { |test_case| require test_case }
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.11
|
3
|
+
specification_version: 1
|
4
|
+
name: gemsonrails
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.2.0
|
7
|
+
date: 2006-10-17 00:00:00 +02:00
|
8
|
+
summary: Link or freeze RubyGems into your rails apps, instead of plugins
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: drnicwilliams@gmail.com
|
12
|
+
homepage: http://gemsonrails.rubyforge.org
|
13
|
+
rubyforge_project:
|
14
|
+
description: Link or freeze RubyGems into your rails apps, instead of plugins
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
authors:
|
29
|
+
- Dr Nic Williams
|
30
|
+
files:
|
31
|
+
- README
|
32
|
+
- CHANGELOG
|
33
|
+
- Rakefile
|
34
|
+
- bin/gemsonrails
|
35
|
+
- test/all_tests.rb
|
36
|
+
- test/gems_to_rails_test.rb
|
37
|
+
- test/test_helper.rb
|
38
|
+
- lib/gemsonrails.rb
|
39
|
+
- lib/gemsonrails
|
40
|
+
- lib/gemsonrails/version.rb
|
41
|
+
- templates/init.rb
|
42
|
+
- templates/tasks_gems_freeze.rake
|
43
|
+
- templates/tasks_gems_link.rake
|
44
|
+
- templates/tasks_gems_unfreeze.rake
|
45
|
+
- templates/tasks_load_tasks_in_gems.rake
|
46
|
+
test_files: []
|
47
|
+
|
48
|
+
rdoc_options:
|
49
|
+
- --quiet
|
50
|
+
- --title
|
51
|
+
- gemsonrails documentation
|
52
|
+
- --opname
|
53
|
+
- index.html
|
54
|
+
- --line-numbers
|
55
|
+
- --main
|
56
|
+
- README
|
57
|
+
- --inline-source
|
58
|
+
- --exclude
|
59
|
+
- ^(examples|extras)/
|
60
|
+
extra_rdoc_files:
|
61
|
+
- README
|
62
|
+
- CHANGELOG
|
63
|
+
executables:
|
64
|
+
- gemsonrails
|
65
|
+
extensions: []
|
66
|
+
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
dependencies: []
|
70
|
+
|