rails-infrastructure 0.1.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.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.rdoc +80 -0
  8. data/Rakefile +7 -0
  9. data/examples/infrastructure/databases.yml +29 -0
  10. data/examples/infrastructure/environment.yml +2 -0
  11. data/examples/infrastructure/server.yml +9 -0
  12. data/examples/infrastructure/servers/unicorn.rb +69 -0
  13. data/examples/infrastructure/servers/unicorn.yml.erb +13 -0
  14. data/examples/infrastructure/version.yml +2 -0
  15. data/examples/infrastructure.yml +11 -0
  16. data/lib/infrastructure/configurable.rb +51 -0
  17. data/lib/infrastructure/configuration.rb +93 -0
  18. data/lib/infrastructure/constants.rb +5 -0
  19. data/lib/infrastructure/databases.rb +117 -0
  20. data/lib/infrastructure/environment.rb +16 -0
  21. data/lib/infrastructure/path.rb +7 -0
  22. data/lib/infrastructure/railtie.rb +68 -0
  23. data/lib/infrastructure/server.rb +7 -0
  24. data/lib/infrastructure/version.rb +23 -0
  25. data/lib/infrastructure.rb +25 -0
  26. data/lib/rails-infrastructure.rb +2 -0
  27. data/lib/tasks/databases.rake +148 -0
  28. data/lib/tasks/environment.rake +19 -0
  29. data/lib/tasks/server.rake +73 -0
  30. data/lib/tasks/version.rake +23 -0
  31. data/rails-infrastructure.gemspec +28 -0
  32. data/test/infrastructure/configurable_test.rb +94 -0
  33. data/test/infrastructure/configuration_test.yml.erb +5 -0
  34. data/test/infrastructure/database_test.rb +108 -0
  35. data/test/infrastructure/environment_test.rb +23 -0
  36. data/test/infrastructure/paths_test.rb +9 -0
  37. data/test/infrastructure/server_test.rb +9 -0
  38. data/test/infrastructure/version_test.rb +23 -0
  39. data/test/infrastructure_test.rb +26 -0
  40. data/test/test_helper.rb +2 -0
  41. metadata +163 -0
@@ -0,0 +1,73 @@
1
+ namespace :server do
2
+
3
+ def execute(command)
4
+ puts "Executing: #{command}"
5
+ `#{command}`
6
+ end
7
+
8
+ Inf.server.servers.each do |server|
9
+ namespace server do
10
+
11
+ desc "Start #{server} server"
12
+ task :start do
13
+ puts "Starting: #{server.to_s.green}"
14
+ start_command = Inf.server.fetch(server).fetch :start
15
+ if start_command.nil?
16
+ raise "no start command configured for #{server}"
17
+ else
18
+ execute start_command
19
+ end
20
+ end
21
+
22
+ desc "Stop #{server} server"
23
+ task :stop do
24
+ puts "Stopping: #{server.to_s.green}"
25
+ stop_command = Inf.server.fetch(server).fetch :stop
26
+ if stop_command.nil?
27
+ raise "no stop command configured for #{server}"
28
+ elsif stop_command == 'kill'
29
+ Rake::Task["server:#{server}:kill"].reinvoke
30
+ else
31
+ execute stop_command
32
+ end
33
+ end
34
+
35
+ desc "Restart #{server} server"
36
+ task :restart do
37
+ Rake::Task["server:#{server}:stop"].reinvoke
38
+ Rake::Task["server:#{server}:start"].reinvoke
39
+ end
40
+
41
+ desc "Kill #{server} server"
42
+ task :kill do
43
+ pid_file = Inf.server.fetch(server).pid_file
44
+ if File.exists? pid_file
45
+ pid = File.read(pid_file).strip.to_i
46
+ raise "could not parse #{server} pid from #{pid_file}" if pid == 0
47
+ signal = Inf.server.fetch(server).fetch(:kill_signal) || 'QUIT'
48
+ begin
49
+ puts "Signal: #{signal}, PID: #{pid}"
50
+ Process.kill signal, pid
51
+ rescue Errno::ENOENT, Errno::ESRCH
52
+ end
53
+ end
54
+ end
55
+
56
+ desc "Tail #{server} server log file"
57
+ task :tail do
58
+ log_file = Inf.server.fetch(server).log_file
59
+ puts "Watching: #{log_file.green}"
60
+ begin
61
+ IO.popen "tail -n 0 -f #{log_file}" do |file|
62
+ while line = file.gets.to_s.strip do
63
+ puts line unless line.empty?
64
+ end
65
+ end
66
+ rescue Interrupt
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+
73
+ end
@@ -0,0 +1,23 @@
1
+ namespace :version do
2
+
3
+ desc 'display current version'
4
+ task :current do
5
+ puts 'Version: ' + Inf.version.to_s.green
6
+ end
7
+
8
+ def save
9
+ Inf.version.save_config Inf.path.rails.config_infrastructure_dir + '/version.yml'
10
+ Rake::Task['version:current'].invoke
11
+ end
12
+
13
+ namespace :bump do
14
+ %w( tiny minor major ).each do |version|
15
+ desc "Bump #{version} version"
16
+ task version.to_sym do
17
+ Inf.version.send "bump_#{version}"
18
+ save
19
+ end
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'infrastructure/constants'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rails-infrastructure"
8
+ spec.version = Infrastructure::VERSION
9
+ spec.platform = Gem::Platform::RUBY
10
+ spec.authors = ["Griffith Chaffee"]
11
+ spec.email = ["griffithchaffee@gmail.com"]
12
+ spec.summary = %q{Rails infrastructure extensions}
13
+ spec.description = %q{Rails infrastructure extensions such as multiple databases and server configuration}
14
+ spec.homepage = "https://github.com/griffithchaffee/rails-infrastructure.git"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_runtime_dependency 'colored'
23
+ spec.add_runtime_dependency 'rails'
24
+
25
+ spec.add_development_dependency "minitest", ">= 4.7"
26
+ spec.add_development_dependency "bundler", "~> 1.3"
27
+ spec.add_development_dependency "rake"
28
+ end
@@ -0,0 +1,94 @@
1
+ require 'test_helper'
2
+
3
+ class Infrastructure::ConfigerableTest < MiniTest::Test
4
+
5
+ def setup
6
+ @class = Class.new do
7
+ include Infrastructure::Configurable
8
+ attr_reader :before_configure_callback
9
+ attr_reader :after_configure_callback
10
+ attr_reader :before_assignment_callback
11
+ attr_reader :after_assignment_callback
12
+ def initialize
13
+ callback :before_configure, -> { @before_configure_callback = true }
14
+ callback :after_configure, -> { @after_configure_callback = true }
15
+ callback :before_assignment, -> (key, value) { @before_assignment_callback = true }
16
+ callback :after_assignment, -> (key, value) { @after_assignment_callback = true }
17
+ end
18
+ end
19
+ @instance = @class.new
20
+ end
21
+
22
+ def test_configure
23
+ @instance.configure do
24
+ config.key1 = 'value1'
25
+ assign :key2, 'value2'
26
+ config.key3 = {
27
+ key4: 'value4',
28
+ key5: { key6: 'value6' }
29
+ }
30
+ end
31
+ assert_instance_of Infrastructure::Configuration, @instance.configuration
32
+ assert_equal 'value1', @instance.key1, 'config.key ='
33
+ assert_equal 'value2', @instance.configuration.key2, 'assign key, value'
34
+ @instance.configuration.key2 = 'value2.1'
35
+ assert_equal 'value2.1', @instance.configuration.key2, 'configuration.key ='
36
+ @instance.configuration.assign :key2, 'value2.2'
37
+ assert_equal 'value2.2', @instance.configuration.key2, 'configuration.assign key, value'
38
+ assert_equal 'value6', @instance.key3.key5.key6, 'configuration.assign nested hash'
39
+ assert_equal @instance.configuration.fetch(:key3), @instance.configuration.key3, 'configuration.assign key, value == configuration.fetch(key)'
40
+ assert_raises NoMethodError do
41
+ @instance.blah = 'test'
42
+ end
43
+ assert_raises NoMethodError do
44
+ @instance.blah
45
+ end
46
+ end
47
+
48
+ def test_callbacks
49
+ refute @instance.before_configure_callback, 'before_configure callback'
50
+ refute @instance.after_configure_callback, 'after_configure callback'
51
+ refute @instance.before_assignment_callback, 'before_assignment callback'
52
+ refute @instance.after_assignment_callback, 'after_assignment callback'
53
+ @instance.configure {}
54
+ assert @instance.before_configure_callback, 'before_configure callback'
55
+ assert @instance.after_configure_callback, 'after_configure callback'
56
+ refute @instance.before_assignment_callback, 'before_assignment callback'
57
+ refute @instance.after_assignment_callback, 'after_assignment callback'
58
+ @instance.configuration.assign :key, :value
59
+ assert @instance.before_assignment_callback, 'before_assignment callback'
60
+ assert @instance.after_assignment_callback, 'after_assignment callback'
61
+ end
62
+
63
+ def test_load_config
64
+ @instance.configuration.load_config File.expand_path('../configuration_test.yml.erb', __FILE__) do
65
+ @success = true
66
+ end
67
+ assert_equal 'value1', @instance.key1, 'config file should ready simple key/value pairs'
68
+ assert_equal 'value3', @instance.key2.key3, 'hashes should be convered to configuration instances'
69
+ assert_equal 'value5', @instance.configuration.key2.key4.key5, 'hashes should be convered to configuration instances'
70
+ assert @success, 'load_config block should be run if file loaded'
71
+ assert_raises Errno::ENOENT do
72
+ @instance.configuration.load_config File.expand_path('../DNE', __FILE__) do
73
+ @failure = true
74
+ end
75
+ end
76
+ @instance.configuration.load_config_if_exists File.expand_path('../DNE', __FILE__) do
77
+ @failure = true
78
+ end
79
+ assert @failure.nil?, 'load_config block should not be run if config not found'
80
+ end
81
+
82
+ def test_save_config
83
+ @instance.configuration.load_config File.expand_path('../configuration_test.yml.erb', __FILE__)
84
+ @instance.configuration.save_config File.expand_path('../configuration_save_test.yml.erb', __FILE__)
85
+ @other = Class.new do
86
+ include Infrastructure::Configurable
87
+ end.new
88
+ @other.configuration.load_config File.expand_path('../configuration_save_test.yml.erb', __FILE__)
89
+ assert @other.configuration.to_h == @instance.configuration.to_h, 'configuration should save and reload the same'
90
+ File.delete File.expand_path('../configuration_save_test.yml.erb', __FILE__)
91
+ end
92
+
93
+
94
+ end
@@ -0,0 +1,5 @@
1
+ key1: 'value1'
2
+ key2:
3
+ key3: 'value3'
4
+ key4:
5
+ key5: 'value5'
@@ -0,0 +1,108 @@
1
+ require 'test_helper'
2
+
3
+ class Infrastructure::DatabasesTest < MiniTest::Test
4
+
5
+ def setup
6
+
7
+ @orm = Class.new do
8
+ class << self
9
+ def establish_connection(config); config end
10
+ def connection
11
+ Class.new do
12
+ def tables; ['test'] end
13
+ def drop_database(database); database end
14
+ def create_database(database); database end
15
+ end.new
16
+ end
17
+ end
18
+ end
19
+ @instance = Infrastructure::Databases.new @orm, 'env1'
20
+ @instance.configure do
21
+ config.system = { database: 'system_database' }
22
+ config.defaults = { global_default: 'global_default' }
23
+ config.env1 = {
24
+ defaults: { environment_default: 'environment_default', id: 'id1' },
25
+ id1: {},
26
+ id2: { database: 'override', environment_default: 'override', global_default: 'override' }
27
+ }
28
+ config.env2 = {
29
+ defaults: { environment_default: 'environment_default', global_default: 'environment_override' },
30
+ id1: {},
31
+ id2: { database: 'override', environment_default: 'override', global_default: 'override' }
32
+ }
33
+ end
34
+ end
35
+
36
+ def test_accessors
37
+ assert_equal :env1, @instance.environment, 'environment accessor'
38
+ assert @instance.orm == @orm, 'orm accessor'
39
+ end
40
+
41
+ def test_merge_defaults
42
+ assert_equal 'global_default', @instance.env1.id1.global_default
43
+ assert_equal 'environment_override', @instance.env2.id1.global_default
44
+ assert_equal 'override', @instance.env1.id2.global_default
45
+ assert_equal 'override', @instance.env2.id2.global_default
46
+ assert_equal 'environment_default', @instance.env1.id1.environment_default
47
+ assert_equal 'override', @instance.env1.id2.environment_default
48
+ assert_equal 'environment_default', @instance.env1.id1.environment_default
49
+ assert_equal 'override', @instance.env1.id2.environment_default
50
+ assert_equal 'id1', @instance.env1.id1.id
51
+ assert_equal 'id2', @instance.env1.id2.id
52
+ assert_equal 'id1', @instance.env2.id1.id
53
+ assert_equal 'id2', @instance.env2.id2.id
54
+ assert_equal 'env1_id1', @instance.env1.id1.database
55
+ assert_equal 'override', @instance.env1.id2.database
56
+ assert_equal 'env2_id1', @instance.env2.id1.database
57
+ assert_equal 'override', @instance.env2.id2.database
58
+ end
59
+
60
+ def test_connection
61
+ refute @instance.connection.is_a?(Class)
62
+ end
63
+
64
+ def test_tables
65
+ assert ['test'] == @instance.tables
66
+ end
67
+
68
+ def test_environment_configs
69
+ assert_equal @instance.env1, @instance.environment_configs
70
+ assert_equal @instance.env2, @instance.environment_configs(:env2)
71
+ end
72
+
73
+ def test_environment_config
74
+ assert_equal @instance.env1.id1.to_h, @instance.environment_config(:id1)
75
+ assert_equal @instance.env1.id2.to_h, @instance.environment_config(:id2)
76
+ assert Hash[a: :b] == @instance.environment_config(a: :b)
77
+ assert_raises ArgumentError do
78
+ @instance.environment_config(:unknown)
79
+ end
80
+ assert_raises ArgumentError do
81
+ @instance.environment_defaults[:id] = 'id3'
82
+ @instance.environment_config(:id3)
83
+ end
84
+ end
85
+
86
+ def test_drop
87
+ assert_equal @instance.env1.id1.database, @instance.drop(:id1)
88
+ assert_equal 'test', @instance.drop(database: 'test')
89
+ end
90
+
91
+ def test_create
92
+ assert_equal @instance.env1.id1.database, @instance.create(:id1)
93
+ assert_equal 'test', @instance.create(database: 'test')
94
+ end
95
+
96
+ def test_connect
97
+ assert_equal @instance.env1.id1.to_h, @instance.connect(:id1)
98
+ end
99
+
100
+ def test_connect!
101
+ assert_equal @instance.env1.id1.to_h, @instance.connect(:id1)
102
+ end
103
+
104
+ def test_databases
105
+ assert ['env1_id1', 'override'] == @instance.databases
106
+ end
107
+
108
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ class Infrastructure::EnvironmentTest < MiniTest::Test
4
+
5
+ def setup
6
+ @instance = Infrastructure::Environment.new
7
+ end
8
+
9
+ def test_environment
10
+ assert_equal '', @instance.to_s, 'default environment = development'
11
+ %w( development test production).each do |environment|
12
+ @instance.assign :environment, environment
13
+ %w( development test production).each do |environment|
14
+ if environment == @instance.to_s
15
+ assert @instance.send("#{environment}?"), "#{environment}? should be true"
16
+ else
17
+ refute @instance.send("#{environment}?"), "#{environment}? should be false"
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class Infrastructure::PathsTest < MiniTest::Test
4
+
5
+ def setup
6
+ @instance = Infrastructure::Path.new
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class Infrastructure::ServerTest < MiniTest::Test
4
+
5
+ def setup
6
+ @instance = Infrastructure::Server.new
7
+ end
8
+
9
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ class Infrastructure::VersionTest < MiniTest::Test
4
+
5
+ def setup
6
+ @instance = Infrastructure::Version.new
7
+ end
8
+
9
+ def test_version
10
+ assert @instance.fetch(:version).nil?, 'default version = nil'
11
+ @instance.assign :version, '0.0.1'
12
+ assert_equal '0.0.1', @instance.version, 'default version = 0.0.1'
13
+ @instance.assign :version, '0.0.2'
14
+ assert_equal '0.0.2', @instance.version, 'version is updated'
15
+ @instance.bump_tiny
16
+ assert_equal '0.0.3', @instance.version, 'bump_tiny'
17
+ @instance.bump_minor
18
+ assert_equal '0.1.3', @instance.version, 'bump_minor'
19
+ @instance.bump_major
20
+ assert_equal '1.1.3', @instance.version, 'bump_major'
21
+ end
22
+
23
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ class InfrastructureTest < MiniTest::Test
4
+
5
+ def setup
6
+ @class = Class.new do
7
+ attr_reader :params
8
+ def initialize(*params); @params = params end
9
+ def test; 'test' end
10
+ end
11
+ end
12
+
13
+ def test_build
14
+ i = Infrastructure.new
15
+ i.build :key1, @class
16
+ assert_instance_of @class, i.key1
17
+ assert_equal 'test', i.key1.test, 'instance methods can be called'
18
+ assert i.key1.params.empty?, 'params are passed'
19
+ i.build :key2, @class, 'value1', 'value2'
20
+ assert_instance_of @class, i.key2
21
+ assert_equal 'test', i.key2.test, 'instance methods can be called'
22
+ assert_equal 'value1', i.key2.params.first, 'params are passed'
23
+ assert_equal 'value2', i.key2.params.last, 'params are passed'
24
+ end
25
+
26
+ end
@@ -0,0 +1,2 @@
1
+ require 'infrastructure'
2
+ require 'minitest/autorun'
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-infrastructure
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Griffith Chaffee
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colored
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '4.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '4.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Rails infrastructure extensions such as multiple databases and server
84
+ configuration
85
+ email:
86
+ - griffithchaffee@gmail.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - .ruby-gemset
93
+ - .ruby-version
94
+ - Gemfile
95
+ - LICENSE.txt
96
+ - README.rdoc
97
+ - Rakefile
98
+ - examples/infrastructure.yml
99
+ - examples/infrastructure/databases.yml
100
+ - examples/infrastructure/environment.yml
101
+ - examples/infrastructure/server.yml
102
+ - examples/infrastructure/servers/unicorn.rb
103
+ - examples/infrastructure/servers/unicorn.yml.erb
104
+ - examples/infrastructure/version.yml
105
+ - lib/infrastructure.rb
106
+ - lib/infrastructure/configurable.rb
107
+ - lib/infrastructure/configuration.rb
108
+ - lib/infrastructure/constants.rb
109
+ - lib/infrastructure/databases.rb
110
+ - lib/infrastructure/environment.rb
111
+ - lib/infrastructure/path.rb
112
+ - lib/infrastructure/railtie.rb
113
+ - lib/infrastructure/server.rb
114
+ - lib/infrastructure/version.rb
115
+ - lib/rails-infrastructure.rb
116
+ - lib/tasks/databases.rake
117
+ - lib/tasks/environment.rake
118
+ - lib/tasks/server.rake
119
+ - lib/tasks/version.rake
120
+ - rails-infrastructure.gemspec
121
+ - test/infrastructure/configurable_test.rb
122
+ - test/infrastructure/configuration_test.yml.erb
123
+ - test/infrastructure/database_test.rb
124
+ - test/infrastructure/environment_test.rb
125
+ - test/infrastructure/paths_test.rb
126
+ - test/infrastructure/server_test.rb
127
+ - test/infrastructure/version_test.rb
128
+ - test/infrastructure_test.rb
129
+ - test/test_helper.rb
130
+ homepage: https://github.com/griffithchaffee/rails-infrastructure.git
131
+ licenses:
132
+ - MIT
133
+ metadata: {}
134
+ post_install_message:
135
+ rdoc_options: []
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ requirements: []
149
+ rubyforge_project:
150
+ rubygems_version: 2.0.4
151
+ signing_key:
152
+ specification_version: 4
153
+ summary: Rails infrastructure extensions
154
+ test_files:
155
+ - test/infrastructure/configurable_test.rb
156
+ - test/infrastructure/configuration_test.yml.erb
157
+ - test/infrastructure/database_test.rb
158
+ - test/infrastructure/environment_test.rb
159
+ - test/infrastructure/paths_test.rb
160
+ - test/infrastructure/server_test.rb
161
+ - test/infrastructure/version_test.rb
162
+ - test/infrastructure_test.rb
163
+ - test/test_helper.rb