gemsonrails 0.5.0 → 0.6.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.
@@ -1,3 +1,11 @@
1
+ +++ 0.6.0 2007-05-11
2
+
3
+ + 1 major enhancement:
4
+ + Linked/frozen gems can be loaded only for certain RAILS_ENVs using ONLY env variable, e.g.
5
+ rake gems:freeze GEM=helper ONLY=development,test
6
+ + 1 minor enhancement:
7
+ + Reinstalling gemsonrails does not delete the original (and its svn meta-data), just overwrites the files
8
+
1
9
  +++ 0.5.0 2007-05-06
2
10
 
3
11
  + 1 major enhancement:
data/README.txt CHANGED
@@ -8,3 +8,8 @@ Then run either:
8
8
  'rake gems:freeze GEM=<gemname> [VERSION=<versionnum>]' to freeze a gem, or
9
9
  'rake gems:link GEM=<gemname>' to link to whatever latest gem release is available at runtime.
10
10
 
11
+ You can restrict which RAILS_ENVs the gem will be loaded for, using ONLY; e.g.
12
+
13
+ 'rake gems:freeze GEM=<gemname> ONLY=development' only in 'development' mode will the gem be loaded, or
14
+ 'rake gems:link GEM=<gemname> ONLY=production,staging' only in 'production' or 'staging' mode will the gem be loaded from the deployment gem server
15
+
data/Rakefile CHANGED
@@ -77,6 +77,8 @@ task :website => [:website_generate, :website_upload]
77
77
  desc 'Release the website and new gem version'
78
78
  task :deploy => [:check_version, :website, :release]
79
79
 
80
+ task :local_deploy => [:website_generate, :install_gem]
81
+
80
82
  task :check_version do
81
83
  unless ENV['VERSION']
82
84
  puts 'Must pass a VERSION=x.y.z release version'
@@ -32,20 +32,19 @@ gems_path = File.join(plugins, 'gemsonrails')
32
32
  tasks_path = File.join(gems_path, 'tasks')
33
33
  task_templates = Dir[File.join(templates, '*.rake')]
34
34
 
35
- FileUtils.rm_rf gems_path
35
+ FileUtils.mkdir_p gems_path
36
36
 
37
- Dir.mkdir gems_path
38
37
  Dir.chdir gems_path do
39
38
  template = File.open(templates + 'init.rb','r') {|f| f.readlines.join}
40
39
  File.open('init.rb', 'w') {|file| file << template }
41
40
  end
42
41
 
43
- Dir.mkdir tasks_path
42
+ FileUtils.mkdir_p tasks_path
44
43
  Dir.chdir tasks_path do
45
44
  task_templates.each do |template_name|
46
45
  task_name = File.basename(template_name).sub(/\Atasks_/,'')
47
46
  template = File.open(template_name,'r') {|f| f.readlines.join}
48
- File.open(task_name, 'w') {|file| file << template }
47
+ File.open(task_name, 'w') { |file| file << template }
49
48
  end
50
49
  end
51
50
 
@@ -1,7 +1,7 @@
1
1
  module GemsOnRails #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 5
4
+ MINOR = 6
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
@@ -1,4 +1,4 @@
1
- gems = Dir[File.join(RAILS_ROOT, "vendor/gems/*")]
1
+ gems = Dir[File.join(RAILS_ROOT, "vendor/gems/*")]
2
2
  if gems.any?
3
3
  gems.each do |dir|
4
4
  lib = File.join(dir, 'lib')
@@ -6,11 +6,17 @@ namespace :gems do
6
6
  Parameters:
7
7
  GEM Name of gem (required)
8
8
  VERSION Version of gem to freeze (optional)
9
+ ONLY RAILS_ENVs for which the GEM will be active (optional)
9
10
 
10
11
  eos
11
12
  break
12
13
  end
13
14
 
15
+ # ONLY=development[,test] etc
16
+ only_list = (ENV['ONLY'] || "").split(',')
17
+ only_if_begin = only_list.size == 0 ? "" : "if %w[#{only_list.join(' ')}].include?(ENV['RAILS_ENV'])"
18
+ only_if_end = only_list.size == 0 ? "" : "end"
19
+
14
20
  require 'rubygems'
15
21
  Gem.manage_gems
16
22
 
@@ -39,8 +45,9 @@ eos
39
45
  if !File.exists?('init.rb')
40
46
  File.open('init.rb', 'w') do |file|
41
47
  file << <<-eos
42
- #require something
43
- require File.join(File.dirname(__FILE__), 'lib', '#{gem_name}')
48
+ #{only_if_begin}
49
+ require File.join(File.dirname(__FILE__), 'lib', '#{gem_name}')
50
+ #{only_if_end}
44
51
  eos
45
52
  end
46
53
  end
@@ -5,12 +5,17 @@ namespace :gems do
5
5
  puts <<-eos
6
6
  Parameters:
7
7
  GEM Name of gem (required)
8
-
8
+ ONLY RAILS_ENVs for which the GEM will be active (optional)
9
9
 
10
10
  eos
11
11
  break
12
12
  end
13
13
 
14
+ # ONLY=development[,test] etc
15
+ only_list = (ENV['ONLY'] || "").split(',')
16
+ only_if_begin = only_list.size == 0 ? "" : "if %w[#{only_list.join(' ')}].include?(ENV['RAILS_ENV'])"
17
+ only_if_end = only_list.size == 0 ? "" : "end"
18
+
14
19
  require 'rubygems'
15
20
  Gem.manage_gems
16
21
 
@@ -32,26 +37,30 @@ eos
32
37
  chdir target_dir, :verbose => false do
33
38
  File.open('init.rb', 'w') do |file|
34
39
  file << <<-eos
35
- require 'rubygems'
36
- Gem.manage_gems
37
- gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
38
- if gem.autorequire
39
- require gem.autorequire
40
- else
41
- require '#{gem.name}'
42
- end
40
+ #{only_if_begin}
41
+ require 'rubygems'
42
+ Gem.manage_gems
43
+ gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
44
+ if gem.autorequire
45
+ require gem.autorequire
46
+ else
47
+ require '#{gem.name}'
48
+ end
49
+ #{only_if_end}
43
50
  eos
44
51
  end
45
52
  File.open(File.join('tasks', 'load_tasks.rake'), 'w') do |file|
46
53
  file << <<-eos
47
54
  # This file does not include any Rake files, but loads up the
48
55
  # tasks in the /vendor/gems/ folders
49
- require 'rubygems'
50
- Gem.manage_gems
51
- gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
52
- raise \"Gem '#{gem.name}' is not installed\" if gem.nil?
53
- path = gem.full_gem_path
54
- Dir[File.join(path, "/**/tasks/**/*.rake")].sort.each { |ext| load ext }
56
+ #{only_if_begin}
57
+ require 'rubygems'
58
+ Gem.manage_gems
59
+ gem = Gem.cache.search('#{gem.name}').sort_by { |g| g.version }.last
60
+ raise \"Gem '#{gem.name}' is not installed\" if gem.nil?
61
+ path = gem.full_gem_path
62
+ Dir[File.join(path, "/**/tasks/**/*.rake")].sort.each { |ext| load ext }
63
+ #{only_if_end}
55
64
  eos
56
65
  end
57
66
  puts "Linked #{gem_name} (currently #{version}) via 'vendor/gems/#{target_dir}'"
@@ -64,7 +64,7 @@ $ gemsonrails</pre>
64
64
  <p>This installs some rake tasks into your app to help you freeze or link gems:</p>
65
65
 
66
66
 
67
- <pre>$ rake -T | grep "gems:"
67
+ <pre syntax="ruby">$ rake -T | grep "gems:"
68
68
  rake gems:freeze # Freeze a RubyGem into this Rails application; init.rb will be loaded on startup.
69
69
  rake gems:link # Link a RubyGem into this Rails application; init.rb will be loaded on startup.
70
70
  rake gems:unfreeze # Unfreeze/unlink a RubyGem from this Rails application
@@ -73,7 +73,7 @@ rake gems:unfreeze # Unfreeze/unlink a RubyGem from this Rails application
73
73
  <p>Finally, for each gem your application uses you can either freeze a version into the app (only for gems that do not require native compilation), or link a gem with your app (useful for gems that require native compilation)</p>
74
74
 
75
75
 
76
- <pre>$ rake gems:freeze GEM=map_by_method
76
+ <pre syntax="ruby">$ rake gems:freeze GEM=map_by_method
77
77
  Unpacked map_by_method 0.6.0 to 'map_by_method-0.6.0'
78
78
 
79
79
  $ ls vendor/gems/map_by_method-0.6.0/
@@ -83,6 +83,19 @@ $ cat vendor/gems/map_by_method-0.6.0/init.rb
83
83
  require File.join(File.dirname(__FILE__), 'lib', 'map_by_method')
84
84
  </pre>
85
85
 
86
+ <h2>Restricting which environments a gem is loaded into</h2>
87
+
88
+
89
+ <p>You can restrict which <span class="caps">RAILS</span>_ENVs the gem will be loaded for, using <span class="caps">ONLY</span>; e.g.</p>
90
+
91
+
92
+ <pre syntax="ruby">$ rake gems:freeze GEM=&lt;gemname&gt; ONLY=development
93
+ $ rake gems:link GEM=&lt;gemname&gt; ONLY=production,staging
94
+ </pre>
95
+
96
+ <p>In the former, only in <strong>development</strong> mode will the gem be loaded. In the latter, only in <strong>production</strong> or <strong>staging</strong> mode will the gem be loaded from the deployment gem server</p>
97
+
98
+
86
99
  <h2>Upgrading from old GemsOnRails versions</h2>
87
100
 
88
101
 
@@ -106,7 +119,7 @@ require File.join(File.dirname(__FILE__), 'lib', 'map_by_method')
106
119
 
107
120
  <p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a>.</p>
108
121
  <p class="coda">
109
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 6th May 2007<br>
122
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 11th May 2007<br>
110
123
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
111
124
  </p>
112
125
  </div>
@@ -21,7 +21,7 @@ $ gemsonrails</pre>
21
21
 
22
22
  This installs some rake tasks into your app to help you freeze or link gems:
23
23
 
24
- <pre>$ rake -T | grep "gems:"
24
+ <pre syntax="ruby">$ rake -T | grep "gems:"
25
25
  rake gems:freeze # Freeze a RubyGem into this Rails application; init.rb will be loaded on startup.
26
26
  rake gems:link # Link a RubyGem into this Rails application; init.rb will be loaded on startup.
27
27
  rake gems:unfreeze # Unfreeze/unlink a RubyGem from this Rails application
@@ -29,7 +29,7 @@ rake gems:unfreeze # Unfreeze/unlink a RubyGem from this Rails application
29
29
 
30
30
  Finally, for each gem your application uses you can either freeze a version into the app (only for gems that do not require native compilation), or link a gem with your app (useful for gems that require native compilation)
31
31
 
32
- <pre>$ rake gems:freeze GEM=map_by_method
32
+ <pre syntax="ruby">$ rake gems:freeze GEM=map_by_method
33
33
  Unpacked map_by_method 0.6.0 to 'map_by_method-0.6.0'
34
34
 
35
35
  $ ls vendor/gems/map_by_method-0.6.0/
@@ -39,6 +39,16 @@ $ cat vendor/gems/map_by_method-0.6.0/init.rb
39
39
  require File.join(File.dirname(__FILE__), 'lib', 'map_by_method')
40
40
  </pre>
41
41
 
42
+ h2. Restricting which environments a gem is loaded into
43
+
44
+ You can restrict which RAILS_ENVs the gem will be loaded for, using ONLY; e.g.
45
+
46
+ <pre syntax="ruby">$ rake gems:freeze GEM=<gemname> ONLY=development
47
+ $ rake gems:link GEM=<gemname> ONLY=production,staging
48
+ </pre>
49
+
50
+ In the former, only in *development* mode will the gem be loaded. In the latter, only in *production* or *staging* mode will the gem be loaded from the deployment gem server
51
+
42
52
  h2. Upgrading from old GemsOnRails versions
43
53
 
44
54
  All the freezing and linking functionality is in the plugin installed by the <code>gemsonrails</code> command. To upgrade, simple install the new gem version, and re-run the <code>gemsonrails</code> command. You application will now have the newest rake tasks and functionality.
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: gemsonrails
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.5.0
7
- date: 2007-05-06 00:00:00 +02:00
6
+ version: 0.6.0
7
+ date: 2007-05-11 00:00:00 +02:00
8
8
  summary: Link or freeze RubyGems into your rails apps, instead of plugins
9
9
  require_paths:
10
10
  - lib