gemsonrails 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
+