frozen_gems_generator 0.4.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.tar.gz.sig +0 -0
- data/History.txt +7 -0
- data/Manifest.txt +10 -0
- data/README.txt +81 -0
- data/Rakefile +24 -0
- data/ToDo.txt +2 -0
- data/generators/frozen_gems/USAGE +12 -0
- data/generators/frozen_gems/frozen_gems_generator.rb +81 -0
- data/generators/frozen_gems/templates/gem +17 -0
- data/generators/frozen_gems/templates/gems.rb +23 -0
- data/test/test_frozen_gems_generator.rb +8 -0
- metadata +106 -0
- metadata.gz.sig +2 -0
data.tar.gz.sig
ADDED
Binary file
|
data/History.txt
ADDED
data/Manifest.txt
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
README.txt
|
4
|
+
Rakefile
|
5
|
+
ToDo.txt
|
6
|
+
generators/frozen_gems/USAGE
|
7
|
+
generators/frozen_gems/frozen_gems_generator.rb
|
8
|
+
generators/frozen_gems/templates/gem
|
9
|
+
generators/frozen_gems/templates/gems.rb
|
10
|
+
test/test_frozen_gems_generator.rb
|
data/README.txt
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
= frozen_gems_generator
|
2
|
+
|
3
|
+
http://opensource.thinkrelevance.com/wiki/FrozenGemsGenerator
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
The frozen_gems generator gives your Rails application its own
|
8
|
+
private gem library, in vendor/gems, and a script/gem command for
|
9
|
+
managing that library.
|
10
|
+
|
11
|
+
To enable, run
|
12
|
+
|
13
|
+
script/generate frozen_gems
|
14
|
+
|
15
|
+
Scripts and tasks that load environment.rb will have access to the
|
16
|
+
application's gem library. Gems in the system-wide gem library are
|
17
|
+
still accessible to your app, but gems in the private library will
|
18
|
+
be found first. (One consequence of this is that 'script/gem list'
|
19
|
+
will show all of the gems installed in both libraries.)
|
20
|
+
|
21
|
+
== FEATURES/PROBLEMS:
|
22
|
+
|
23
|
+
Gems that have binary components install the binary components in
|
24
|
+
the system-wide Ruby lib directories. Thus, when such gems are
|
25
|
+
frozen and deployed, they will be incomplete. I recommend that you
|
26
|
+
install such gems in the system-wide gem library on development
|
27
|
+
machines and the deployment machine alike. Suggestions for a
|
28
|
+
satisfactory solution to this problem are welcome.
|
29
|
+
|
30
|
+
== SYNOPSIS:
|
31
|
+
|
32
|
+
To manage your app's gems, use the script/gem command (which is
|
33
|
+
just a wrapper for the standard gem command and uses the same
|
34
|
+
syntax). For example:
|
35
|
+
|
36
|
+
$ script/gem install xml-simple
|
37
|
+
Executing 'gem install' with --no-rdoc and --no-ri options
|
38
|
+
Bulk updating Gem source index for: http://gems.rubyforge.org
|
39
|
+
Successfully installed xml-simple-1.0.11
|
40
|
+
|
41
|
+
Gems are installed without RDoc and ri documentation; other than
|
42
|
+
that, the behavior should be the same as the standard gem command.
|
43
|
+
(Due to a bug in some versions of RubyGems, the first attempted
|
44
|
+
installation may fail; subsequent attempts should succeed.)
|
45
|
+
|
46
|
+
== REQUIREMENTS:
|
47
|
+
|
48
|
+
FrozenGems assumes Rails 2.0 or greater, due to its dependency on
|
49
|
+
preinitializer.rb. If you're using an earlier version of Rails,
|
50
|
+
you can copy the contents of config/preinitializer.rb into
|
51
|
+
config/environment.rb, just prior to the call to Rails::Initializer.run.
|
52
|
+
|
53
|
+
== INSTALL:
|
54
|
+
|
55
|
+
* sudo gem install frozen_gems_generator
|
56
|
+
* script/generate frozen_gems
|
57
|
+
|
58
|
+
== LICENSE:
|
59
|
+
|
60
|
+
(The MIT License)
|
61
|
+
|
62
|
+
Copyright (c) 2008 Glenn Vanderburg
|
63
|
+
|
64
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
65
|
+
a copy of this software and associated documentation files (the
|
66
|
+
'Software'), to deal in the Software without restriction, including
|
67
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
68
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
69
|
+
permit persons to whom the Software is furnished to do so, subject to
|
70
|
+
the following conditions:
|
71
|
+
|
72
|
+
The above copyright notice and this permission notice shall be
|
73
|
+
included in all copies or substantial portions of the Software.
|
74
|
+
|
75
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
76
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
77
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
78
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
79
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
80
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
81
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'hoe'
|
5
|
+
gem 'rails'
|
6
|
+
require 'rails_generator'
|
7
|
+
require 'generators/frozen_gems/frozen_gems_generator.rb'
|
8
|
+
|
9
|
+
Hoe.new('frozen_gems_generator', FrozenGemsGenerator::VERSION) do |p|
|
10
|
+
p.rubyforge_name = 'thinkrelevance'
|
11
|
+
p.author = 'Glenn Vanderburg'
|
12
|
+
p.email = ['glenn@thinkrelevance.com', 'glv@vanderburg.org']
|
13
|
+
p.summary = 'Application-specific gem libraries for Rails projects.'
|
14
|
+
p.description = p.paragraphs_of('README.txt', 3..5).join("\n\n")
|
15
|
+
p.url = p.paragraphs_of('README.txt', 1).first.split(/\n/)[0]
|
16
|
+
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
17
|
+
p.extra_deps = %w{rails}
|
18
|
+
p.spec_extras = {
|
19
|
+
:require_paths => ['generators/frozen_gems'],
|
20
|
+
:has_rdoc => false
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
# vim: syntax=Ruby
|
data/ToDo.txt
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
Description:
|
2
|
+
Installs and patches files to provide a frozen, application-specific gem library.
|
3
|
+
|
4
|
+
Example:
|
5
|
+
./script/generate frozen_gems
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
script/gem
|
9
|
+
config/gems.rb
|
10
|
+
|
11
|
+
and create or patch (as necessary):
|
12
|
+
config/preinitializer.rb
|
@@ -0,0 +1,81 @@
|
|
1
|
+
class FrozenGemsGenerator < Rails::Generator::Base
|
2
|
+
VERSION = '0.4.0'
|
3
|
+
|
4
|
+
def manifest
|
5
|
+
record do |m|
|
6
|
+
m.file 'gem', 'script/gem', :chmod => 0755, :shebang => '/usr/bin/env ruby'
|
7
|
+
m.file 'gems.rb', 'config/gems.rb'
|
8
|
+
|
9
|
+
m.preinitialize <<-EOFRAG
|
10
|
+
# Before plugins get loaded, activate FrozenGems private gem library
|
11
|
+
require 'rubygems'
|
12
|
+
require File.join(File.dirname(__FILE__), 'gems')
|
13
|
+
EOFRAG
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'rails_generator/simple_logger'
|
19
|
+
|
20
|
+
module Rails
|
21
|
+
module Generator
|
22
|
+
module Commands
|
23
|
+
|
24
|
+
class Base
|
25
|
+
protected
|
26
|
+
|
27
|
+
def match_in_file(file, regexp)
|
28
|
+
File.read(file) =~ regexp
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Create
|
33
|
+
def preinitialize(fragment)
|
34
|
+
pre_path = "config/preinitializer.rb"
|
35
|
+
full_path = destination_path(pre_path)
|
36
|
+
destination_exists = File.exists?(full_path)
|
37
|
+
|
38
|
+
if destination_exists && match_in_file(full_path, /(#{Regexp.escape(fragment)})/mi)
|
39
|
+
logger.exists "#{pre_path} (patch)"
|
40
|
+
return
|
41
|
+
elsif destination_exists
|
42
|
+
logger.patch pre_path
|
43
|
+
else
|
44
|
+
logger.create pre_path
|
45
|
+
end
|
46
|
+
unless options[:pretend]
|
47
|
+
File.open(full_path, "w+") do |pre_file|
|
48
|
+
pre_file.puts
|
49
|
+
pre_file.puts fragment
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class Destroy
|
56
|
+
def preinitialize(fragment)
|
57
|
+
pre_path = "config/preinitializer.rb"
|
58
|
+
full_path = destination_path(pre_path)
|
59
|
+
patch_re = /(#{Regexp.escape(fragment)})/mi
|
60
|
+
|
61
|
+
if File.exists?(full_path) && match_in_file(full_path, patch_re)
|
62
|
+
logger.unpatch pre_path
|
63
|
+
else
|
64
|
+
logger.skip pre_path
|
65
|
+
return
|
66
|
+
end
|
67
|
+
|
68
|
+
gsub_file pre_path, patch_re, ''
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class List
|
73
|
+
def preinitialize(fragment)
|
74
|
+
resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
|
75
|
+
logger.preinit "config/preinitializer.rb (patch)"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Part of FrozenGems
|
3
|
+
FROZEN_GEMS_SCRIPT_GEM = true
|
4
|
+
|
5
|
+
require File.dirname(__FILE__) + '/../config/gems'
|
6
|
+
args = ARGV.dup
|
7
|
+
args.each_with_index do |arg, i|
|
8
|
+
unless arg =~ /^-/ # find subcommand
|
9
|
+
if arg =~ /^(install|update)$/
|
10
|
+
args.insert(i+1, '--no-rdoc', '--no-ri')
|
11
|
+
puts "Executing 'gem #{$1}' with --no-rdoc and --no-ri options"
|
12
|
+
end
|
13
|
+
break
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
system('gem', *args)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Part of FrozenGems
|
2
|
+
local_gem_repos = File.expand_path(File.dirname(__FILE__) + '/../vendor/gems')
|
3
|
+
|
4
|
+
gems_loaded = Gem::RubyGemsVersion rescue false
|
5
|
+
|
6
|
+
if Object.const_defined? :FROZEN_GEMS_SCRIPT_GEM || !gems_loaded
|
7
|
+
sep = File::PATH_SEPARATOR
|
8
|
+
existing_gem_path = `gem environment gempath`.chomp.gsub($/, sep)
|
9
|
+
ENV['GEM_HOME'] = local_gem_repos
|
10
|
+
ENV['GEM_PATH'] = local_gem_repos + sep + existing_gem_path
|
11
|
+
else
|
12
|
+
paths = Gem.path.dup
|
13
|
+
paths.insert(0, local_gem_repos)
|
14
|
+
Gem.use_paths local_gem_repos, paths
|
15
|
+
module Gem
|
16
|
+
def self.reset_searcher
|
17
|
+
MUTEX.synchronize do
|
18
|
+
@searcher = nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
Gem.reset_searcher
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: frozen_gems_generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Glenn Vanderburg
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDRDCCAiygAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMQ4wDAYDVQQDDAVnbGVu
|
14
|
+
bjEeMBwGCgmSJomT8ixkARkWDnRoaW5rcmVsZXZhbmNlMRYwFAYKCZImiZPyLGQB
|
15
|
+
GRYGY29tZ2x2MB4XDTA4MDMwNDIwNDIzNFoXDTA5MDMwNDIwNDIzNFowSDEOMAwG
|
16
|
+
A1UEAwwFZ2xlbm4xHjAcBgoJkiaJk/IsZAEZFg50aGlua3JlbGV2YW5jZTEWMBQG
|
17
|
+
CgmSJomT8ixkARkWBmNvbWdsdjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBALXdD5Y00ZMPO/dL8sj1IcfomhezB+9rsO/FoCnR9TJyaOGPBAJBEfyA3SkP
|
19
|
+
hpbCkkUDpNlRR2sQHrtqBJovpw2oX6zakrG8PnDQQPU1oo0tWkiDtPFQc9lgDJOA
|
20
|
+
S/nQiS2D9rusOmpj84KpC6DUN80M+ap9z04Xadobuv7Cer/dTOfs4skUBiN/aonA
|
21
|
+
qtaRNOlOPGyPGiCa8tUQd53fVml2hSKIgt/+HfBHHWZkHs9UQRsqd7GICFi5R24i
|
22
|
+
ZNXbaRzw4637eCcjBhlEes9KMJOwayZ1KXHWzOdSzRJUI6nT4AQjw3GCyuXBmCY0
|
23
|
+
LFrbGOLYuqfiv/zr+Z+qqyI3Ul0CAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8E
|
24
|
+
BAMCBLAwHQYDVR0OBBYEFOsd6jtw384ogcRecKkFdFpm9SQkMA0GCSqGSIb3DQEB
|
25
|
+
BQUAA4IBAQBokYH6Pe63OU1O9t4z6jEom2NDieUlLWD9PTshI4UXUjxd83mjmg/Y
|
26
|
+
Cer/yqFHqQEW6BLNRmH6l2lw2Rb8CZdlh7K8Q8F/94M+actty2UvMgTyVEtOnyh/
|
27
|
+
QU8nqEil5vl7ppCwDeSF32cebsQoimkgAamOxVZVe5ipP1+UIO+Eu92Jt5k0hrnd
|
28
|
+
1Fz3W+wrffm45P2X/6Z36dXgZKn8dlHuYtsqgpQxBC92oE7UqHXvwAu3FFe+1EV7
|
29
|
+
LrV1pr2EyieDotJOooYNz/E+9ZeL14MBhDOVmPr4KHTTK4VwdxFtAKu2QK/NfAAl
|
30
|
+
zrNa6ECLh1VS/pV78rYbAO1ZXsg3l7bY
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
|
33
|
+
date: 2008-03-04 00:00:00 -06:00
|
34
|
+
default_executable:
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rails
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: hoe
|
47
|
+
version_requirement:
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.5.0
|
53
|
+
version:
|
54
|
+
description: The frozen_gems generator gives your Rails application its own private gem library, in vendor/gems, and a script/gem command for managing that library. To enable, run script/generate frozen_gems
|
55
|
+
email:
|
56
|
+
- glenn@thinkrelevance.com
|
57
|
+
- glv@vanderburg.org
|
58
|
+
executables: []
|
59
|
+
|
60
|
+
extensions: []
|
61
|
+
|
62
|
+
extra_rdoc_files:
|
63
|
+
- History.txt
|
64
|
+
- Manifest.txt
|
65
|
+
- README.txt
|
66
|
+
- ToDo.txt
|
67
|
+
files:
|
68
|
+
- History.txt
|
69
|
+
- Manifest.txt
|
70
|
+
- README.txt
|
71
|
+
- Rakefile
|
72
|
+
- ToDo.txt
|
73
|
+
- generators/frozen_gems/USAGE
|
74
|
+
- generators/frozen_gems/frozen_gems_generator.rb
|
75
|
+
- generators/frozen_gems/templates/gem
|
76
|
+
- generators/frozen_gems/templates/gems.rb
|
77
|
+
- test/test_frozen_gems_generator.rb
|
78
|
+
has_rdoc: false
|
79
|
+
homepage: http://opensource.thinkrelevance.com/wiki/FrozenGemsGenerator
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options:
|
82
|
+
- --main
|
83
|
+
- README.txt
|
84
|
+
require_paths:
|
85
|
+
- generators/frozen_gems
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: "0"
|
91
|
+
version:
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: "0"
|
97
|
+
version:
|
98
|
+
requirements: []
|
99
|
+
|
100
|
+
rubyforge_project: thinkrelevance
|
101
|
+
rubygems_version: 1.0.1
|
102
|
+
signing_key:
|
103
|
+
specification_version: 2
|
104
|
+
summary: Application-specific gem libraries for Rails projects.
|
105
|
+
test_files:
|
106
|
+
- test/test_frozen_gems_generator.rb
|
metadata.gz.sig
ADDED