gemsonrails 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG ADDED
File without changes
data/README ADDED
@@ -0,0 +1,3 @@
1
+ README for gems_to_rails
2
+ ========================
3
+
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
+
@@ -0,0 +1,9 @@
1
+ module GemsOnRails #:nodoc:
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 2
5
+ TINY = 0
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'gemsonrails/**/*.rb')].sort.each { |lib| require lib }
2
+
data/templates/init.rb ADDED
@@ -0,0 +1,9 @@
1
+ gems = Dir[File.join(RAILS_ROOT, "vendor/gems/*")]
2
+ if gems.any?
3
+ gems.each do |dir|
4
+ lib = File.join(dir, 'lib')
5
+ $LOAD_PATH.unshift(lib) if File.directory?(lib)
6
+ init_rb = File.join(dir, 'init.rb')
7
+ require init_rb if File.file?(init_rb)
8
+ end
9
+ end
@@ -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
@@ -0,0 +1,7 @@
1
+ namespace :gems do
2
+ desc "Unfreeze/unlink a RubyGem from this Rails application"
3
+ task :unfreeze do
4
+ raise "No gem specified" unless gem_name = ENV['GEM']
5
+ Dir["vendor/gems/#{gem_name}*"].each { |d| rm_rf d }
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ # This file does not include any Rake files, but loads up the
2
+ # tasks in the /vendor/gems/ folders
3
+
4
+ Dir[File.join(RAILS_ROOT, "vendor/gems/*/**/tasks/**/*.rake")].sort.each { |ext| load ext }
data/test/all_tests.rb ADDED
@@ -0,0 +1 @@
1
+ Dir['**/*_test.rb'].each { |test_case| require test_case }
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class GemsToRailTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/gems_to_rails'
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
+