heroku-rails-saas 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,39 @@
1
+ Heroku Rails SaaS
2
+
3
+ v0.4.3
4
+ ============================================
5
+ Forking Gem to Add support for multiple apps/environments to be run off the same rails code base
6
+
7
+
8
+ Heroku Rails
9
+
10
+ v0.2.0
11
+ ============================================
12
+ Added Heroku Settings tasks, and rails generators
13
+
14
+ Cleaned out lots of tasks that are now handled by editing config/heroku.yml and running `rake heroku:setup`
15
+
16
+ Namespaced tasks such as heroku:deploy, heroku:console, etc. The only top level task now is `rake all ...` which sets all the environments. Individual environment tasks (e.g. `rake production ...`) are still generated without a namespace.
17
+
18
+
19
+ v0.0.1
20
+ ============================================
21
+ Initial fork and reorganization
22
+
23
+
24
+ Heroku Sans
25
+ v0.2.0
26
+ ============================================
27
+
28
+ Elijah Miller
29
+ Fix newline error in gem manifest
30
+ Improve instructions
31
+
32
+ Glenn Roberts
33
+ Gem-ify it
34
+ Improve generation of gems manifest
35
+
36
+
37
+ v0.0.1.
38
+ ============================================
39
+ Initial release.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source :rubygems
2
+ gemspec
3
+
4
+ # gem "ruby-debug", :platforms => :mri_18
5
+ # gem "ruby-debug19", :platforms => :mri_19
6
+
7
+ gem "autotest", ">= 0"
8
+ gem "growl-glue", ">= 0"
9
+
10
+ gem "rake", "0.8.7"
data/Gemfile.lock ADDED
@@ -0,0 +1,46 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ heroku-rails-saas (0.1.0)
5
+ heroku (>= 2.24.1)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ ZenTest (4.7.0)
11
+ addressable (2.2.7)
12
+ autotest (4.4.6)
13
+ ZenTest (>= 4.4.1)
14
+ diff-lcs (1.1.3)
15
+ growl-glue (1.0.7)
16
+ heroku (2.24.1)
17
+ launchy (>= 0.3.2)
18
+ netrc (~> 0.7.1)
19
+ rest-client (~> 1.6.1)
20
+ rubyzip
21
+ launchy (2.1.0)
22
+ addressable (~> 2.2.6)
23
+ mime-types (1.18)
24
+ netrc (0.7.1)
25
+ rake (0.8.7)
26
+ rest-client (1.6.7)
27
+ mime-types (>= 1.16)
28
+ rspec (2.9.0)
29
+ rspec-core (~> 2.9.0)
30
+ rspec-expectations (~> 2.9.0)
31
+ rspec-mocks (~> 2.9.0)
32
+ rspec-core (2.9.0)
33
+ rspec-expectations (2.9.1)
34
+ diff-lcs (~> 1.1.3)
35
+ rspec-mocks (2.9.0)
36
+ rubyzip (0.9.7)
37
+
38
+ PLATFORMS
39
+ ruby
40
+
41
+ DEPENDENCIES
42
+ autotest
43
+ growl-glue
44
+ heroku-rails-saas!
45
+ rake (= 0.8.7)
46
+ rspec (~> 2.0)
data/LICENSE ADDED
@@ -0,0 +1,65 @@
1
+ Heroku Rails SaaS License:
2
+ Copyright (c) 2010 Lance Sanchez
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+
23
+ Heroku Rails License:
24
+ Copyright (c) 2010 Jacques Crocker
25
+
26
+ Permission is hereby granted, free of charge, to any person obtaining
27
+ a copy of this software and associated documentation files (the
28
+ "Software"), to deal in the Software without restriction, including
29
+ without limitation the rights to use, copy, modify, merge, publish,
30
+ distribute, sublicense, and/or sell copies of the Software, and to
31
+ permit persons to whom the Software is furnished to do so, subject to
32
+ the following conditions:
33
+
34
+ The above copyright notice and this permission notice shall be
35
+ included in all copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
38
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
39
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
40
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
41
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
42
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
43
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
44
+
45
+ Heroku Sans License:
46
+ Copyright (c) 2008 Elijah Miller
47
+
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of this software and associated documentation files (the
50
+ "Software"), to deal in the Software without restriction, including
51
+ without limitation the rights to use, copy, modify, merge, publish,
52
+ distribute, sublicense, and/or sell copies of the Software, and to
53
+ permit persons to whom the Software is furnished to do so, subject to
54
+ the following conditions:
55
+
56
+ The above copyright notice and this permission notice shall be
57
+ included in all copies or substantial portions of the Software.
58
+
59
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
60
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
62
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
63
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
64
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
65
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,211 @@
1
+ Heroku Rails SaaS
2
+ =============
3
+
4
+ Easier configuration and deployment of Rails apps on Heroku
5
+
6
+ Configure all your Heroku enviroments via a YML file (config/heroku.yml) that defines all your environments, addons, and environment variables.
7
+ Configure your app specific Heroku environment via a YML file (config/heroku/awesomeapp.yml) thats defines all your environments, addons, and
8
+ environment variables for awesomeapp.
9
+
10
+ ## Install
11
+
12
+ ### Rails 3
13
+
14
+ Add this to your Gemfile:
15
+
16
+ group :development do
17
+ gem 'heroku-rails'
18
+ end
19
+
20
+ ## Configure
21
+
22
+ In config/heroku.yml you will need add the Heroku apps that you would like to attach to this project. You can generate this file and edit it by running:
23
+
24
+ rails generate heroku:config
25
+
26
+ If you want to defined more
27
+
28
+ ### Example Configuration File
29
+
30
+ For all configuration settings
31
+
32
+ config:
33
+ BUNDLE_WITHOUT: "test:development"
34
+ CONFIG_VAR1: "config1"
35
+ CONFIG_VAR2: "config2"
36
+
37
+ # Be sure to add yourself as a collaborator, otherwise your
38
+ # access to the app will be revoked.
39
+ collaborators:
40
+ - "my-heroku-email@somedomain.com"
41
+ - "another-heroku-email@somedomain.com"
42
+
43
+ addons:
44
+ - scheduler:standard
45
+ # add any other addons here
46
+
47
+ For an app specific settings awesomeapp
48
+
49
+ apps:
50
+ production: awesomeapp
51
+ staging: awesomeapp-staging
52
+ legacy: awesomeapp-legacy
53
+
54
+ stacks:
55
+ bamboo-mri-1.9.2
56
+
57
+ production:
58
+ CONFIG_VAR1: "config1-production"
59
+
60
+ collaborators
61
+ - "awesomeapp@somedomain.com"
62
+
63
+ domains:
64
+ production:
65
+ - "awesomeapp.com"
66
+ - "www.awesomeapp.com"
67
+
68
+ production:
69
+ - ssl:piggyback
70
+ - cron:daily
71
+ - newrelic:bronze
72
+
73
+
74
+ ### Setting up Heroku
75
+
76
+ To set heroku up (using your heroku.yml), just run.
77
+
78
+ rake all heroku:setup
79
+
80
+ This will create the heroku apps you have defined, and create the settings for each.
81
+
82
+ Run `rake heroku:setup` every time you edit the heroku.yml. It will only make incremental changes (based on what you've added/removed). If nothing has changed in the heroku.yml since the last `heroku:setup`, then no heroku changes will be sent.
83
+
84
+
85
+ ## Usage
86
+
87
+ After configuring your Heroku apps you can use rake tasks to control the
88
+ apps.
89
+
90
+ rake <app_name>:production heroku:deploy
91
+
92
+ A rake task with the shorthand name of each app is now available and adds that
93
+ server to the list that subsequent commands will execute on. Because this list
94
+ is additive, you can easily select which servers to run a command on.
95
+
96
+ rake <app_name>:demo <app_name>:staging heroku:restart
97
+
98
+ A special rake task 'all' is created that causes any further commands to
99
+ execute on all heroku apps (Note: Any environment labeled `production` will not
100
+ be included, you must explicitly state it).
101
+
102
+ Futhermore there are rake task 'environments' created from environments in configs
103
+ that causes any further commands to execute on all heroku apps.
104
+
105
+ rake all:production heroku:info
106
+
107
+ Need to add remotes for each app?
108
+
109
+ rake all heroku:remotes
110
+
111
+ A full list of tasks provided:
112
+
113
+ rake all # Select all non Production Heroku apps for later command
114
+ rake all:production # Select all Production Heroku apps for later command
115
+ rake heroku:deploy # Deploys, migrates and restarts latest code.
116
+ rake heroku:apps # Lists configured apps
117
+ rake heroku:info # Queries the heroku status info on each app
118
+ rake heroku:console # Opens a remote console
119
+ rake heroku:capture # Captures a bundle on Heroku
120
+ rake heroku:remotes # Add git remotes for all apps in this project
121
+ rake heroku:migrate # Migrates and restarts remote servers
122
+ rake heroku:restart # Restarts remote servers
123
+
124
+ rake heroku:setup # runs all heroku setup scripts
125
+ rake heroku:setup:addons # sets up the heroku addons
126
+ rake heroku:setup:collaborators # sets up the heroku collaborators
127
+ rake heroku:setup:config # sets up the heroku config env variables
128
+ rake heroku:setup:domains # sets up the heroku domains
129
+ rake heroku:setup:stacks # sets the correct stack for each heroku app
130
+
131
+ rake heroku:db:setup # Migrates and restarts remote servers
132
+
133
+ You can easily alias frequently used tasks within your application's Rakefile:
134
+
135
+ task :deploy => ["heroku:deploy"]
136
+ task :console => ["heroku:console"]
137
+ task :capture => ["heroku:capture"]
138
+
139
+ With this in place, you can be a bit more terse:
140
+
141
+ rake all:staging console
142
+ rake all deploy
143
+
144
+ ### Deploy Hooks
145
+
146
+ You can easily hook into the deploy process by defining any of the following rake tasks.
147
+
148
+ When you ran `rails generate heroku:config`, it created a list of empty rake tasks within lib/tasks/heroku.rake. Edit these rake tasks to provide custom logic for before/after deployment.
149
+
150
+ namespace :heroku do
151
+ # runs before all the deploys complete
152
+ task :before_deploy do
153
+
154
+ end
155
+
156
+ # runs before each push to a particular heroku deploy environment
157
+ task :before_each_deploy do
158
+
159
+ end
160
+
161
+ # runs after each push to a particular heroku deploy environment
162
+ task :after_each_deploy do
163
+
164
+ end
165
+
166
+ # runs after all the deploys complete
167
+ task :after_deploy do
168
+
169
+ end
170
+ end
171
+
172
+
173
+ ## About Heroku Rails SaaS
174
+
175
+ ### Links
176
+
177
+ Homepage:: <https://github.com/darkbushido/heroku-rails-saas>
178
+
179
+ Issue Tracker:: <http://github.com/darkbushido/heroku-rails-saas/issues>
180
+
181
+ ### License
182
+
183
+ License:: Copyright (c) 2012 Lance Sanchez <lance.sanchez@gmail.com> released under the MIT license.
184
+
185
+ ## Forked from Heroku Rails
186
+
187
+ Heroku Rails SaaS is a fork/extension for Heroku Rails to add the ability to manage multiple apps with multiple enviroments
188
+
189
+ ### Heroku Rails Contributors
190
+
191
+ * Jacques Crocker (railsjedi@gmail.com)
192
+
193
+ ### Heroku Rails License
194
+
195
+ License:: Copyright (c) 2010 Jacques Crocker <railsjedi@gmail.com>, released under the MIT license.
196
+
197
+ ## Forked from Heroku Sans
198
+
199
+ Heroku Rails is a fork and rewrite/reorganiziation of the heroku_sans gem. Heroku Sans is a simple and elegant set of Rake tasks for managing Heroku environments. Check out that project here: <http://github.com/fastestforward/heroku_san>
200
+
201
+ ### Heroku Sans Contributors
202
+
203
+ * Elijah Miller (elijah.miller@gmail.com)
204
+ * Glenn Roberts (glenn.roberts@siyelo.com)
205
+ * Damien Mathieu (42@dmathieu.com)
206
+
207
+ ### Heroku Sans License
208
+
209
+ License:: Copyright (c) 2009 Elijah Miller <elijah.miller@gmail.com>, released under the MIT license.
210
+
211
+
data/Rakefile ADDED
@@ -0,0 +1,43 @@
1
+ require "bundler"
2
+ Bundler.setup
3
+
4
+ require 'rake'
5
+ require 'rake/gempackagetask'
6
+
7
+ gemspec = eval(File.read('heroku-rails.gemspec'))
8
+ Rake::GemPackageTask.new(gemspec) do |pkg|
9
+ pkg.gem_spec = gemspec
10
+ end
11
+
12
+ desc "build the gem and release it to rubygems.org"
13
+ task :release => :gem do
14
+ puts "Tagging #{gemspec.version}..."
15
+ system "git tag -a #{gemspec.version} -m 'Tagging #{gemspec.version}'"
16
+ puts "Pushing to Github..."
17
+ system "git push --tags"
18
+ puts "Pushing to rubygems.org..."
19
+ system "gem push pkg/#{gemspec.name}-#{gemspec.version}.gem"
20
+ end
21
+
22
+ require "rspec"
23
+ require "rspec/core/rake_task"
24
+
25
+ Rspec::Core::RakeTask.new(:spec) do |spec|
26
+ spec.pattern = "spec/**/*_spec.rb"
27
+ end
28
+
29
+ Rspec::Core::RakeTask.new('spec:progress') do |spec|
30
+ spec.rspec_opts = %w(--format progress)
31
+ spec.pattern = "spec/**/*_spec.rb"
32
+ end
33
+
34
+ require "rake/rdoctask"
35
+ Rake::RDocTask.new do |rdoc|
36
+ rdoc.rdoc_dir = "rdoc"
37
+ rdoc.title = "Heroku Rails SaaS #{gemspec.version}"
38
+ rdoc.rdoc_files.include("README*")
39
+ rdoc.rdoc_files.include("lib/**/*.rb")
40
+ end
41
+
42
+
43
+ task :default => :spec
data/TODO ADDED
File without changes
@@ -0,0 +1,38 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "heroku-rails-saas"
3
+ s.version = "0.1.0"
4
+
5
+ s.authors = [ "Elijah Miller", "Glenn Roberts", "Jacques Crocker", "Lance Sanchez"]
6
+
7
+ s.summary = "Deployment and configuration tools for Heroku/Rails"
8
+ s.description = "Manage multiple Heroku instances/apps for a single Rails app using Rake."
9
+
10
+ s.email = "railsjedi@gmail.com"
11
+ s.homepage = "http://github.com/darkbushido/heroku-rails-saas"
12
+ s.rubyforge_project = "none"
13
+
14
+ s.require_paths = ["lib"]
15
+ s.files = Dir['lib/**/*',
16
+ 'spec/**/*',
17
+ 'heroku-rails.gemspec',
18
+ 'Gemfile',
19
+ 'Gemfile.lock',
20
+ 'CHANGELOG',
21
+ 'LICENSE',
22
+ 'Rakefile',
23
+ 'README.md',
24
+ 'TODO']
25
+
26
+ s.test_files = Dir['spec/**/*']
27
+ s.rdoc_options = ["--charset=UTF-8"]
28
+ s.extra_rdoc_files = [
29
+ "LICENSE",
30
+ "README.md",
31
+ "TODO",
32
+ "CHANGELOG"
33
+ ]
34
+
35
+ s.add_runtime_dependency "heroku", ">= 2.24.1"
36
+ s.add_development_dependency "rspec", "~> 2.0"
37
+ end
38
+