heroku_config_vars 0.0.2.pre

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 (94) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +1 -0
  3. data/Rakefile +30 -0
  4. data/app/assets/javascripts/heroku_config_vars/application.js +15 -0
  5. data/app/assets/javascripts/heroku_config_vars/var_form.js +28 -0
  6. data/app/assets/stylesheets/heroku_config_vars/application.css +31 -0
  7. data/app/assets/stylesheets/heroku_config_vars/button.css.scss +54 -0
  8. data/app/assets/stylesheets/heroku_config_vars/menu.css.scss +36 -0
  9. data/app/assets/stylesheets/heroku_config_vars/table.css.scss +28 -0
  10. data/app/controllers/heroku_config_vars/application_controller.rb +46 -0
  11. data/app/controllers/heroku_config_vars/heroku_apps_controller.rb +50 -0
  12. data/app/helpers/heroku_config_vars/application_helper.rb +8 -0
  13. data/app/models/heroku_config_vars/heroku_app.rb +138 -0
  14. data/app/views/heroku_config_vars/application/env.html.erb +14 -0
  15. data/app/views/heroku_config_vars/application/recommend_https.html.erb +6 -0
  16. data/app/views/heroku_config_vars/heroku_apps/_errors.html.erb +5 -0
  17. data/app/views/heroku_config_vars/heroku_apps/confirmation.html.erb +73 -0
  18. data/app/views/heroku_config_vars/heroku_apps/edit.html.erb +37 -0
  19. data/app/views/heroku_config_vars/heroku_apps/new.html.erb +21 -0
  20. data/app/views/heroku_config_vars/heroku_apps/show.html.erb +20 -0
  21. data/app/views/layouts/heroku_config_vars/application.html.erb +20 -0
  22. data/config/routes.rb +5 -0
  23. data/lib/heroku_config_vars/engine.rb +12 -0
  24. data/lib/heroku_config_vars/version.rb +3 -0
  25. data/lib/heroku_config_vars.rb +5 -0
  26. data/lib/tasks/heroku_config_vars_tasks.rake +4 -0
  27. data/spec/dummy/README.rdoc +261 -0
  28. data/spec/dummy/Rakefile +7 -0
  29. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  30. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  31. data/spec/dummy/app/controllers/application_controller.rb +8 -0
  32. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  33. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  34. data/spec/dummy/config/application.rb +49 -0
  35. data/spec/dummy/config/boot.rb +10 -0
  36. data/spec/dummy/config/environment.rb +5 -0
  37. data/spec/dummy/config/environments/development.rb +29 -0
  38. data/spec/dummy/config/environments/test.rb +29 -0
  39. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  40. data/spec/dummy/config/initializers/inflections.rb +15 -0
  41. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  42. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  43. data/spec/dummy/config/initializers/session_store.rb +8 -0
  44. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  45. data/spec/dummy/config/locales/en.yml +5 -0
  46. data/spec/dummy/config/routes.rb +4 -0
  47. data/spec/dummy/config.ru +4 -0
  48. data/spec/dummy/log/test.log +6002 -0
  49. data/spec/dummy/public/404.html +26 -0
  50. data/spec/dummy/public/422.html +26 -0
  51. data/spec/dummy/public/500.html +25 -0
  52. data/spec/dummy/public/favicon.ico +0 -0
  53. data/spec/dummy/script/rails +6 -0
  54. data/spec/dummy/tmp/cache/assets/C20/540/sprockets%2F9f7052464a49612e023f9088fa442053 +0 -0
  55. data/spec/dummy/tmp/cache/assets/C97/2C0/sprockets%2F3945d527e8ea800568e77dd095c67391 +0 -0
  56. data/spec/dummy/tmp/cache/assets/C9B/060/sprockets%2Fa20484759fec963d3f51839934c3848f +0 -0
  57. data/spec/dummy/tmp/cache/assets/CAC/5E0/sprockets%2F425b0f4900e04b7736af6e64c4f46902 +0 -0
  58. data/spec/dummy/tmp/cache/assets/CBA/440/sprockets%2F8291695bea92c347d6a509dfa2379810 +0 -0
  59. data/spec/dummy/tmp/cache/assets/CBF/C20/sprockets%2Fdd57917c8268e99fe0a17332550ef632 +0 -0
  60. data/spec/dummy/tmp/cache/assets/CD9/8E0/sprockets%2F0681932233ab9af521f58c34cbf091f5 +0 -0
  61. data/spec/dummy/tmp/cache/assets/CF0/D20/sprockets%2F6997e8f2f3f34b07c51d6689d3ec5120 +0 -0
  62. data/spec/dummy/tmp/cache/assets/CFA/C10/sprockets%2Fca5852e7ebc212e12405091c0ca7a449 +0 -0
  63. data/spec/dummy/tmp/cache/assets/D0C/BD0/sprockets%2F7e5673b3d2e6c24b8a290ff222a4843d +0 -0
  64. data/spec/dummy/tmp/cache/assets/D0F/CF0/sprockets%2Fa54d897b366850d6aff2583dcd21141b +0 -0
  65. data/spec/dummy/tmp/cache/assets/D11/650/sprockets%2Fa79c1979284b6712e0a09bdde83c711b +0 -0
  66. data/spec/dummy/tmp/cache/assets/D2A/5E0/sprockets%2F8f9f3295a33983dafe83cbc75895a346 +0 -0
  67. data/spec/dummy/tmp/cache/assets/D2F/830/sprockets%2Fd6b510595130dc04df17a75eae623ee0 +0 -0
  68. data/spec/dummy/tmp/cache/assets/D3A/0E0/sprockets%2F12c0c4243a0757c81af09989ece2d4dc +0 -0
  69. data/spec/dummy/tmp/cache/assets/D3A/B10/sprockets%2Fa6033a4a85f3d8f4f5a68c3215bc64b6 +0 -0
  70. data/spec/dummy/tmp/cache/assets/D44/BB0/sprockets%2F6f8a1b369f3e20121751ff9356bebf8c +0 -0
  71. data/spec/dummy/tmp/cache/assets/D70/B70/sprockets%2Fa1415c8ffaef728e4e786c0e48061ac2 +0 -0
  72. data/spec/dummy/tmp/cache/assets/D94/CA0/sprockets%2Fb36822d80e1aee3257c5cf2f4ddeb043 +0 -0
  73. data/spec/dummy/tmp/cache/assets/DAA/850/sprockets%2F7e2ddb2b088e0c526941fef48af19ff5 +0 -0
  74. data/spec/dummy/tmp/cache/assets/DC3/970/sprockets%2Fd5d2e0cc86cec4e411aa31c549fcb870 +0 -0
  75. data/spec/dummy/tmp/capybara/capybara-201302162255389397158257.html +56 -0
  76. data/spec/dummy/tmp/capybara/capybara-201302162255545698499887.html +56 -0
  77. data/spec/dummy/tmp/capybara/capybara-201302162256212974676040.html +56 -0
  78. data/spec/dummy/tmp/capybara/capybara-201302162256278576954261.html +56 -0
  79. data/spec/dummy/tmp/capybara/capybara-201302200948319507521481.html +26 -0
  80. data/spec/dummy/tmp/capybara/capybara-20130220094839395273181.html +46 -0
  81. data/spec/dummy/tmp/pids/server.pid +1 -0
  82. data/spec/features/config_vars/edit_spec.rb +102 -0
  83. data/spec/features/config_vars/show_spec.rb +39 -0
  84. data/spec/features/env/show_spec.rb +16 -0
  85. data/spec/features/security/requires_admin_spec.rb +9 -0
  86. data/spec/features/security/suggests_ssl_spec.rb +28 -0
  87. data/spec/features/setup/new_app_spec.rb +42 -0
  88. data/spec/helpers/application_helper_spec.rb +15 -0
  89. data/spec/lib/heroku_config_vars_spec.rb +6 -0
  90. data/spec/models/heroku_config_vars/heroku_app_spec.rb +185 -0
  91. data/spec/spec_helper.rb +39 -0
  92. data/spec/support/heroku_responses.rb +35 -0
  93. data/spec/views/heroku_config_vars/application/recommend_https_spec.rb +14 -0
  94. metadata +336 -0
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'New app' do
4
+
5
+ stub_heroku_responses
6
+
7
+ let(:set_vars) { live_vars }
8
+
9
+ scenario 'Visit root without ENV set' do
10
+ visit root_url(protocol: 'https')
11
+
12
+ expect(current_path).to eq new_heroku_app_path
13
+ end
14
+
15
+ scenario 'Visit new heroku app path' do
16
+ visit new_heroku_app_url(protocol: 'https')
17
+
18
+ expect(page).to have_selector 'h2', text: 'One Time Setup'
19
+ expect(page).to have_field 'App Name'
20
+ expect(page).to have_field 'API Key'
21
+ end
22
+
23
+ scenario 'Submit blank form' do
24
+ visit new_heroku_app_url(protocol: 'https')
25
+ click_button 'Save'
26
+
27
+ expect(page).to have_selector 'li', text: "App name can't be blank"
28
+ expect(page).to have_selector 'li', text: "Api key can't be blank"
29
+ end
30
+
31
+ scenario 'Submit valid form' do
32
+ visit new_heroku_app_url(protocol: 'https')
33
+ fill_in 'App Name', with: valid_app_name
34
+ fill_in 'API Key', with: valid_api_key
35
+ click_button 'Save'
36
+
37
+ expect(page).to have_selector 'h2', text: valid_app_name
38
+ expect(page).to have_text valid_api_key
39
+ expect(current_path).to eq heroku_app_path
40
+ end
41
+
42
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ module HerokuConfigVars
4
+ describe ApplicationHelper do
5
+
6
+ describe '#menu_link' do
7
+ it 'works' do
8
+ expect(helper.menu_link 'name', '/path').to eq(
9
+ '<a href="/path"><span class="menu-option">name</span></a>'
10
+ )
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ require 'spec_helper'
2
+
3
+ describe HerokuConfigVars do
4
+ # Sanity test
5
+ it { should be_a_kind_of Module }
6
+ end
@@ -0,0 +1,185 @@
1
+ require 'spec_helper'
2
+
3
+ module HerokuConfigVars
4
+ describe HerokuApp do
5
+
6
+ let(:app_name) { 'valid-app-name' }
7
+ let(:api_key) { 'valid-api-key' }
8
+ let(:auth) { 'Basic ' << Base64::strict_encode64(':' << api_key) }
9
+
10
+ before do
11
+ stub_request(:get, "https://api.heroku.com/apps/#{app_name}/config_vars").
12
+ with(:headers => {'Authorization'=>auth}).
13
+ to_return(:body => <<-RESPONSE
14
+ {
15
+ "DATABASE_URL": "postgres://xxx:xxx@ec2-54-243-229-75.compute-1.amazonaws.com:5432/d26ti1mqt7h24",
16
+ "HEROKU_POSTGRESQL_MAROON_URL": "postgres://xxx:xxx@ec2-54-243-229-75.compute-1.amazonaws.com:5432/d26ti1mqt7h24",
17
+ "HEROKU_APP_NAME": "#{app_name}",
18
+ "HEROKU_API_KEY": "#{api_key}"
19
+ }
20
+ RESPONSE
21
+ )
22
+ end
23
+
24
+ describe '::find' do
25
+ subject { described_class.find }
26
+
27
+ context 'without ENV set' do
28
+ before do
29
+ ENV.delete 'HEROKU_APP_NAME'
30
+ ENV.delete 'HEROKU_API_KEY'
31
+ end
32
+
33
+ it { should be_a_kind_of HerokuApp }
34
+ its(:app_name) { should be_nil }
35
+ its(:api_key) { should be_nil }
36
+
37
+ specify('no request made') do
38
+ expect(a_request :any, "api.heroku.com").not_to have_been_made
39
+ end
40
+ end
41
+
42
+ context 'with valid ENV set' do
43
+ before do
44
+ ENV['HEROKU_APP_NAME'] = app_name
45
+ ENV['HEROKU_API_KEY'] = api_key
46
+ end
47
+
48
+ it { should be_a_kind_of HerokuApp }
49
+ it { should be_loaded }
50
+
51
+ its(:api_key) { should eq api_key }
52
+ its(:app_name) { should eq app_name }
53
+ end
54
+
55
+ end
56
+
57
+ describe '::new' do
58
+ subject { described_class.new args }
59
+
60
+ context 'with no args' do
61
+ let(:args) do
62
+ {}
63
+ end
64
+
65
+ it { should_not be_valid }
66
+ it { should have(1).error_on(:app_name) }
67
+ it { should have(1).error_on(:api_key) }
68
+ it { should_not be_loaded }
69
+ its(:vars) { should be_empty }
70
+ end
71
+
72
+ context 'with valid credentials' do
73
+ let(:args) do
74
+ {
75
+ :api_key => api_key,
76
+ :app_name => app_name,
77
+ }
78
+ end
79
+
80
+ it { should be_valid }
81
+ it { should_not be_loaded }
82
+ its(:vars) { should include 'HEROKU_APP_NAME' }
83
+ its(:vars) { should include 'HEROKU_API_KEY' }
84
+ end
85
+ end
86
+
87
+ describe '#attributes=' do
88
+ subject(:app) { described_class.new }
89
+ before { app.attributes = {:api_key => 'foo'} }
90
+
91
+ its(:api_key) { should eq 'foo' }
92
+ end
93
+
94
+ describe '#load_vars' do
95
+ context 'with non-existent app name'
96
+ context 'with unauthorized app name'
97
+ context 'with invalid api key'
98
+ context 'with no config set'
99
+ context 'with config'
100
+ end
101
+
102
+ describe '#save'
103
+
104
+ context 'with changed `vars`' do
105
+ before do
106
+ stub_request(:get, "https://api.heroku.com/apps/#{app_name}/config_vars").
107
+ with(headers: {'Authorization'=>auth}).
108
+ to_return(headers: {
109
+ 'Content-Type' => 'application/json'
110
+ }, body: <<-RESPONSE
111
+ {
112
+ 'VAR1': 'value 1',
113
+ 'VAR2': 'value 2',
114
+ 'VAR3': 'value 3',
115
+ 'VAR4': 'value 4',
116
+ }
117
+ RESPONSE
118
+ )
119
+ end
120
+
121
+ let(:app) { described_class.new(api_key: api_key, app_name: app_name) { |app| app.load_vars } }
122
+
123
+ before do
124
+ puts app.vars
125
+ app.vars = {
126
+ 'VAR2' => 'value 2',
127
+ 'VAR3' => 'value 33',
128
+ 'VAR4' => 'value 44',
129
+ 'VAR5' => 'value 5'
130
+ }
131
+ end
132
+
133
+ describe '#removed_vars'
134
+ describe '#added_vars'
135
+ describe '#kept_vars'
136
+ describe '#updated_vars'
137
+ describe '#updated_and_added_vars'
138
+ describe '#changes'
139
+ end
140
+
141
+ # context 'with an invalid api_key' do
142
+ # let(:args) do
143
+ # {
144
+ # :api_key => 'xxx',
145
+ # :app_name => app_name,
146
+ # }
147
+ # end
148
+ #
149
+ # it { should_not be_valid }
150
+ # it { should have(1).error_on(:api_key) }
151
+ # end
152
+ #
153
+ # context 'with an invalid app_name' do
154
+ # let(:args) do
155
+ # {
156
+ # :api_key => api_key,
157
+ # :app_name => 'xxx',
158
+ # }
159
+ # end
160
+ #
161
+ # it { should_not be_valid }
162
+ # it { should have(1).error_on(:app_name) }
163
+ # end
164
+ # specify('no request made') do
165
+ # expect(a_request :any, "api.heroku.com").not_to have_been_made
166
+ # end
167
+ #
168
+ # context 'with an invalid ENV' do
169
+ # before do
170
+ # ENV['HEROKU_APP_NAME'] = 'xxx'
171
+ # ENV['HEROKU_API_KEY'] = 'xxx'
172
+ # end
173
+ #
174
+ # it { should be_a_kind_of HerokuApp }
175
+ # it { should be_loaded }
176
+ #
177
+ # its(:vars) { should be_present }
178
+ # its(:api_key) { should eq api_key }
179
+ # its(:app_name) { should eq app_name }
180
+ # its(:errors) { should be_blank }
181
+ # end
182
+
183
+
184
+ end
185
+ end
@@ -0,0 +1,39 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require 'rspec/rails'
6
+ require 'webmock/rspec'
7
+ require 'capybara/rspec'
8
+
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+
11
+ # Requires supporting ruby files with custom matchers and macros, etc,
12
+ # in spec/support/ and its subdirectories.
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ RSpec.configure do |config|
16
+ # If true, the base class of anonymous controllers will be inferred
17
+ # automatically. This will be the default behavior in future versions of
18
+ # rspec-rails.
19
+ config.infer_base_class_for_anonymous_controllers = false
20
+
21
+ # Run specs in random order to surface order dependencies. If you find an
22
+ # order dependency and want to debug it, you can fix the order by providing
23
+ # the seed, which is printed after each run.
24
+ # --seed 1234
25
+ config.order = "random"
26
+
27
+ config.expect_with :rspec do |c|
28
+ # Disable old-style `should` syntax
29
+ c.syntax = :expect
30
+ end
31
+
32
+ config.include HerokuConfigVars::Engine.routes.url_helpers
33
+ config.extend HerokuResponses::ClassMethods
34
+
35
+ config.after do
36
+ ENV.delete 'HEROKU_APP_NAME'
37
+ ENV.delete 'HEROKU_API_KEY'
38
+ end
39
+ end
@@ -0,0 +1,35 @@
1
+ module HerokuResponses
2
+ module ClassMethods
3
+
4
+ def stub_heroku_responses
5
+ let(:valid_app_name) { 'valid_app_name' }
6
+ let(:valid_api_key) { 'valid_api_key' }
7
+ let(:valid_auth) { 'Basic ' << Base64::strict_encode64(':' << valid_api_key) }
8
+ let(:live_vars) { {"HEROKU_APP_NAME" => valid_app_name, "HEROKU_API_KEY" => valid_api_key } }
9
+ let(:set_vars) { Hash.new }
10
+ let(:delete_var) { '' }
11
+
12
+ before do
13
+ stub_request(:get, "https://api.heroku.com/apps/#{valid_app_name}/config_vars").
14
+ with(headers: { 'Authorization' => valid_auth }).
15
+ to_return(body: live_vars.to_json)
16
+
17
+ stub_request(:put, "https://api.heroku.com/apps/#{valid_app_name}/config_vars").
18
+ with(headers: { 'Authorization' => valid_auth }).
19
+ with(body: set_vars.to_json).
20
+ to_return(:status => 200, :body => "", :headers => {})
21
+
22
+ stub_request(:delete, "https://api.heroku.com/apps/#{valid_app_name}/config_vars/#{delete_var}").
23
+ with(headers: { 'Authorization' => valid_auth }).
24
+ to_return(:status => 200, :body => "", :headers => {})
25
+ end
26
+ end
27
+
28
+ def setup_app
29
+ before do
30
+ ENV['HEROKU_APP_NAME'] = valid_app_name
31
+ ENV['HEROKU_API_KEY'] = valid_api_key
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ # -- can't make this happen
2
+
3
+ #require 'spec_helper'
4
+ #
5
+ #
6
+ #describe 'heroku_config_vars/application/_recommend_https.html.erb' do
7
+ # before { render }
8
+ # before { @routes = HerokuConfigVars::Engine.routes }
9
+ #
10
+ # it 'displays both options' do
11
+ # expect(rendered).to match /Switch to secure connection/
12
+ # expect(rendered).to match /Continue insecurely/
13
+ # end
14
+ #end
metadata ADDED
@@ -0,0 +1,336 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: heroku_config_vars
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: 6
5
+ version: 0.0.2.pre
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Fone
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-02-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ none: false
21
+ prerelease: false
22
+ name: rails
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '3.0'
28
+ none: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '0.3'
36
+ none: false
37
+ prerelease: false
38
+ name: heroku-api
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '0.3'
44
+ none: false
45
+ type: :runtime
46
+ - !ruby/object:Gem::Dependency
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: 3.2.0
52
+ none: false
53
+ prerelease: false
54
+ name: rails
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: 3.2.0
60
+ none: false
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 2.12.0
68
+ none: false
69
+ prerelease: false
70
+ name: rspec-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 2.12.0
76
+ none: false
77
+ type: :development
78
+ - !ruby/object:Gem::Dependency
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 1.9.0
84
+ none: false
85
+ prerelease: false
86
+ name: webmock
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: 1.9.0
92
+ none: false
93
+ type: :development
94
+ - !ruby/object:Gem::Dependency
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 2.0.0
100
+ none: false
101
+ prerelease: false
102
+ name: capybara
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ version: 2.0.0
108
+ none: false
109
+ type: :development
110
+ - !ruby/object:Gem::Dependency
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ~>
114
+ - !ruby/object:Gem::Version
115
+ version: 2.2.0
116
+ none: false
117
+ prerelease: false
118
+ name: launchy
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: 2.2.0
124
+ none: false
125
+ type: :development
126
+ - !ruby/object:Gem::Dependency
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 3.2.0
132
+ none: false
133
+ prerelease: false
134
+ name: sass-rails
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 3.2.0
140
+ none: false
141
+ type: :development
142
+ description: Engine to manage Heroku configuration variables from within your application
143
+ email:
144
+ - daniel@fone.net.nz
145
+ executables: []
146
+ extensions: []
147
+ extra_rdoc_files: []
148
+ files:
149
+ - app/assets/javascripts/heroku_config_vars/application.js
150
+ - app/assets/javascripts/heroku_config_vars/var_form.js
151
+ - app/assets/stylesheets/heroku_config_vars/application.css
152
+ - app/assets/stylesheets/heroku_config_vars/button.css.scss
153
+ - app/assets/stylesheets/heroku_config_vars/menu.css.scss
154
+ - app/assets/stylesheets/heroku_config_vars/table.css.scss
155
+ - app/controllers/heroku_config_vars/application_controller.rb
156
+ - app/controllers/heroku_config_vars/heroku_apps_controller.rb
157
+ - app/helpers/heroku_config_vars/application_helper.rb
158
+ - app/models/heroku_config_vars/heroku_app.rb
159
+ - app/views/heroku_config_vars/application/env.html.erb
160
+ - app/views/heroku_config_vars/application/recommend_https.html.erb
161
+ - app/views/heroku_config_vars/heroku_apps/_errors.html.erb
162
+ - app/views/heroku_config_vars/heroku_apps/confirmation.html.erb
163
+ - app/views/heroku_config_vars/heroku_apps/edit.html.erb
164
+ - app/views/heroku_config_vars/heroku_apps/new.html.erb
165
+ - app/views/heroku_config_vars/heroku_apps/show.html.erb
166
+ - app/views/layouts/heroku_config_vars/application.html.erb
167
+ - config/routes.rb
168
+ - lib/heroku_config_vars/engine.rb
169
+ - lib/heroku_config_vars/version.rb
170
+ - lib/heroku_config_vars.rb
171
+ - lib/tasks/heroku_config_vars_tasks.rake
172
+ - MIT-LICENSE
173
+ - Rakefile
174
+ - README.md
175
+ - spec/dummy/app/assets/javascripts/application.js
176
+ - spec/dummy/app/assets/stylesheets/application.css
177
+ - spec/dummy/app/controllers/application_controller.rb
178
+ - spec/dummy/app/helpers/application_helper.rb
179
+ - spec/dummy/app/views/layouts/application.html.erb
180
+ - spec/dummy/config/application.rb
181
+ - spec/dummy/config/boot.rb
182
+ - spec/dummy/config/environment.rb
183
+ - spec/dummy/config/environments/development.rb
184
+ - spec/dummy/config/environments/test.rb
185
+ - spec/dummy/config/initializers/backtrace_silencers.rb
186
+ - spec/dummy/config/initializers/inflections.rb
187
+ - spec/dummy/config/initializers/mime_types.rb
188
+ - spec/dummy/config/initializers/secret_token.rb
189
+ - spec/dummy/config/initializers/session_store.rb
190
+ - spec/dummy/config/initializers/wrap_parameters.rb
191
+ - spec/dummy/config/locales/en.yml
192
+ - spec/dummy/config/routes.rb
193
+ - spec/dummy/config.ru
194
+ - spec/dummy/log/test.log
195
+ - spec/dummy/public/404.html
196
+ - spec/dummy/public/422.html
197
+ - spec/dummy/public/500.html
198
+ - spec/dummy/public/favicon.ico
199
+ - spec/dummy/Rakefile
200
+ - spec/dummy/README.rdoc
201
+ - spec/dummy/script/rails
202
+ - spec/dummy/tmp/cache/assets/C20/540/sprockets%2F9f7052464a49612e023f9088fa442053
203
+ - spec/dummy/tmp/cache/assets/C97/2C0/sprockets%2F3945d527e8ea800568e77dd095c67391
204
+ - spec/dummy/tmp/cache/assets/C9B/060/sprockets%2Fa20484759fec963d3f51839934c3848f
205
+ - spec/dummy/tmp/cache/assets/CAC/5E0/sprockets%2F425b0f4900e04b7736af6e64c4f46902
206
+ - spec/dummy/tmp/cache/assets/CBA/440/sprockets%2F8291695bea92c347d6a509dfa2379810
207
+ - spec/dummy/tmp/cache/assets/CBF/C20/sprockets%2Fdd57917c8268e99fe0a17332550ef632
208
+ - spec/dummy/tmp/cache/assets/CD9/8E0/sprockets%2F0681932233ab9af521f58c34cbf091f5
209
+ - spec/dummy/tmp/cache/assets/CF0/D20/sprockets%2F6997e8f2f3f34b07c51d6689d3ec5120
210
+ - spec/dummy/tmp/cache/assets/CFA/C10/sprockets%2Fca5852e7ebc212e12405091c0ca7a449
211
+ - spec/dummy/tmp/cache/assets/D0C/BD0/sprockets%2F7e5673b3d2e6c24b8a290ff222a4843d
212
+ - spec/dummy/tmp/cache/assets/D0F/CF0/sprockets%2Fa54d897b366850d6aff2583dcd21141b
213
+ - spec/dummy/tmp/cache/assets/D11/650/sprockets%2Fa79c1979284b6712e0a09bdde83c711b
214
+ - spec/dummy/tmp/cache/assets/D2A/5E0/sprockets%2F8f9f3295a33983dafe83cbc75895a346
215
+ - spec/dummy/tmp/cache/assets/D2F/830/sprockets%2Fd6b510595130dc04df17a75eae623ee0
216
+ - spec/dummy/tmp/cache/assets/D3A/0E0/sprockets%2F12c0c4243a0757c81af09989ece2d4dc
217
+ - spec/dummy/tmp/cache/assets/D3A/B10/sprockets%2Fa6033a4a85f3d8f4f5a68c3215bc64b6
218
+ - spec/dummy/tmp/cache/assets/D44/BB0/sprockets%2F6f8a1b369f3e20121751ff9356bebf8c
219
+ - spec/dummy/tmp/cache/assets/D70/B70/sprockets%2Fa1415c8ffaef728e4e786c0e48061ac2
220
+ - spec/dummy/tmp/cache/assets/D94/CA0/sprockets%2Fb36822d80e1aee3257c5cf2f4ddeb043
221
+ - spec/dummy/tmp/cache/assets/DAA/850/sprockets%2F7e2ddb2b088e0c526941fef48af19ff5
222
+ - spec/dummy/tmp/cache/assets/DC3/970/sprockets%2Fd5d2e0cc86cec4e411aa31c549fcb870
223
+ - spec/dummy/tmp/capybara/capybara-201302162255389397158257.html
224
+ - spec/dummy/tmp/capybara/capybara-201302162255545698499887.html
225
+ - spec/dummy/tmp/capybara/capybara-201302162256212974676040.html
226
+ - spec/dummy/tmp/capybara/capybara-201302162256278576954261.html
227
+ - spec/dummy/tmp/capybara/capybara-201302200948319507521481.html
228
+ - spec/dummy/tmp/capybara/capybara-20130220094839395273181.html
229
+ - spec/dummy/tmp/pids/server.pid
230
+ - spec/features/config_vars/edit_spec.rb
231
+ - spec/features/config_vars/show_spec.rb
232
+ - spec/features/env/show_spec.rb
233
+ - spec/features/security/requires_admin_spec.rb
234
+ - spec/features/security/suggests_ssl_spec.rb
235
+ - spec/features/setup/new_app_spec.rb
236
+ - spec/helpers/application_helper_spec.rb
237
+ - spec/lib/heroku_config_vars_spec.rb
238
+ - spec/models/heroku_config_vars/heroku_app_spec.rb
239
+ - spec/spec_helper.rb
240
+ - spec/support/heroku_responses.rb
241
+ - spec/views/heroku_config_vars/application/recommend_https_spec.rb
242
+ homepage: https://github.com/danielfone/heroku_config_vars
243
+ licenses: []
244
+ post_install_message:
245
+ rdoc_options: []
246
+ require_paths:
247
+ - lib
248
+ required_ruby_version: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ! '>='
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ segments:
254
+ - 0
255
+ hash: -1751966687122114319
256
+ none: false
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ! '>'
260
+ - !ruby/object:Gem::Version
261
+ version: 1.3.1
262
+ none: false
263
+ requirements: []
264
+ rubyforge_project:
265
+ rubygems_version: 1.8.25
266
+ signing_key:
267
+ specification_version: 3
268
+ summary: Engine to manage Heroku configuration variables from within your application
269
+ test_files:
270
+ - spec/dummy/app/assets/javascripts/application.js
271
+ - spec/dummy/app/assets/stylesheets/application.css
272
+ - spec/dummy/app/controllers/application_controller.rb
273
+ - spec/dummy/app/helpers/application_helper.rb
274
+ - spec/dummy/app/views/layouts/application.html.erb
275
+ - spec/dummy/config/application.rb
276
+ - spec/dummy/config/boot.rb
277
+ - spec/dummy/config/environment.rb
278
+ - spec/dummy/config/environments/development.rb
279
+ - spec/dummy/config/environments/test.rb
280
+ - spec/dummy/config/initializers/backtrace_silencers.rb
281
+ - spec/dummy/config/initializers/inflections.rb
282
+ - spec/dummy/config/initializers/mime_types.rb
283
+ - spec/dummy/config/initializers/secret_token.rb
284
+ - spec/dummy/config/initializers/session_store.rb
285
+ - spec/dummy/config/initializers/wrap_parameters.rb
286
+ - spec/dummy/config/locales/en.yml
287
+ - spec/dummy/config/routes.rb
288
+ - spec/dummy/config.ru
289
+ - spec/dummy/log/test.log
290
+ - spec/dummy/public/404.html
291
+ - spec/dummy/public/422.html
292
+ - spec/dummy/public/500.html
293
+ - spec/dummy/public/favicon.ico
294
+ - spec/dummy/Rakefile
295
+ - spec/dummy/README.rdoc
296
+ - spec/dummy/script/rails
297
+ - spec/dummy/tmp/cache/assets/C20/540/sprockets%2F9f7052464a49612e023f9088fa442053
298
+ - spec/dummy/tmp/cache/assets/C97/2C0/sprockets%2F3945d527e8ea800568e77dd095c67391
299
+ - spec/dummy/tmp/cache/assets/C9B/060/sprockets%2Fa20484759fec963d3f51839934c3848f
300
+ - spec/dummy/tmp/cache/assets/CAC/5E0/sprockets%2F425b0f4900e04b7736af6e64c4f46902
301
+ - spec/dummy/tmp/cache/assets/CBA/440/sprockets%2F8291695bea92c347d6a509dfa2379810
302
+ - spec/dummy/tmp/cache/assets/CBF/C20/sprockets%2Fdd57917c8268e99fe0a17332550ef632
303
+ - spec/dummy/tmp/cache/assets/CD9/8E0/sprockets%2F0681932233ab9af521f58c34cbf091f5
304
+ - spec/dummy/tmp/cache/assets/CF0/D20/sprockets%2F6997e8f2f3f34b07c51d6689d3ec5120
305
+ - spec/dummy/tmp/cache/assets/CFA/C10/sprockets%2Fca5852e7ebc212e12405091c0ca7a449
306
+ - spec/dummy/tmp/cache/assets/D0C/BD0/sprockets%2F7e5673b3d2e6c24b8a290ff222a4843d
307
+ - spec/dummy/tmp/cache/assets/D0F/CF0/sprockets%2Fa54d897b366850d6aff2583dcd21141b
308
+ - spec/dummy/tmp/cache/assets/D11/650/sprockets%2Fa79c1979284b6712e0a09bdde83c711b
309
+ - spec/dummy/tmp/cache/assets/D2A/5E0/sprockets%2F8f9f3295a33983dafe83cbc75895a346
310
+ - spec/dummy/tmp/cache/assets/D2F/830/sprockets%2Fd6b510595130dc04df17a75eae623ee0
311
+ - spec/dummy/tmp/cache/assets/D3A/0E0/sprockets%2F12c0c4243a0757c81af09989ece2d4dc
312
+ - spec/dummy/tmp/cache/assets/D3A/B10/sprockets%2Fa6033a4a85f3d8f4f5a68c3215bc64b6
313
+ - spec/dummy/tmp/cache/assets/D44/BB0/sprockets%2F6f8a1b369f3e20121751ff9356bebf8c
314
+ - spec/dummy/tmp/cache/assets/D70/B70/sprockets%2Fa1415c8ffaef728e4e786c0e48061ac2
315
+ - spec/dummy/tmp/cache/assets/D94/CA0/sprockets%2Fb36822d80e1aee3257c5cf2f4ddeb043
316
+ - spec/dummy/tmp/cache/assets/DAA/850/sprockets%2F7e2ddb2b088e0c526941fef48af19ff5
317
+ - spec/dummy/tmp/cache/assets/DC3/970/sprockets%2Fd5d2e0cc86cec4e411aa31c549fcb870
318
+ - spec/dummy/tmp/capybara/capybara-201302162255389397158257.html
319
+ - spec/dummy/tmp/capybara/capybara-201302162255545698499887.html
320
+ - spec/dummy/tmp/capybara/capybara-201302162256212974676040.html
321
+ - spec/dummy/tmp/capybara/capybara-201302162256278576954261.html
322
+ - spec/dummy/tmp/capybara/capybara-201302200948319507521481.html
323
+ - spec/dummy/tmp/capybara/capybara-20130220094839395273181.html
324
+ - spec/dummy/tmp/pids/server.pid
325
+ - spec/features/config_vars/edit_spec.rb
326
+ - spec/features/config_vars/show_spec.rb
327
+ - spec/features/env/show_spec.rb
328
+ - spec/features/security/requires_admin_spec.rb
329
+ - spec/features/security/suggests_ssl_spec.rb
330
+ - spec/features/setup/new_app_spec.rb
331
+ - spec/helpers/application_helper_spec.rb
332
+ - spec/lib/heroku_config_vars_spec.rb
333
+ - spec/models/heroku_config_vars/heroku_app_spec.rb
334
+ - spec/spec_helper.rb
335
+ - spec/support/heroku_responses.rb
336
+ - spec/views/heroku_config_vars/application/recommend_https_spec.rb