ey_rails_wizard 0.4.0 → 0.5.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/ChangeLog.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # ChangeLog
2
2
 
3
+ * `eycloud` - now using `ey_cli` to create/boot environments
4
+ * `twitter_bootstrap` - based on latest RailsCast
5
+ * `github` - asks for a new repo name if cannot create a repository
6
+ * Better resolution of ordering of nested dependencies... by doing more .sort.sort.sort.... oh noes.
7
+
3
8
  ## v0.4
4
9
 
5
10
  * SCROLLS ARE IN, "recipes" are out. Wizards use scrolls. Alchemists use recipes.
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{Quickly and easily create Rails application templates featuring dozens of popular libraries tuned for Engine Yard Cloud}
14
14
 
15
15
  s.add_dependency "i18n"
16
+ s.add_dependency "json", "1.6.5"
16
17
  s.add_dependency "activesupport", "~> 3.0"
17
18
  s.add_dependency "thor"
18
19
  s.add_development_dependency "rspec", "~> 2.5.0"
Binary file
@@ -0,0 +1,13 @@
1
+ Description:
2
+ Apply an application template to an existing application
3
+
4
+ Application templates are traditionally used for new applications. Such as:
5
+
6
+ rails new myapp -m /path/to/template.rb
7
+
8
+ This generator allows the templates to be reused/reapplied to this existing application.
9
+
10
+ Example:
11
+ rails g run_template /path/to/template.rb
12
+ rails g run_template https://mycompany.com/template.rb
13
+
@@ -0,0 +1,13 @@
1
+ class RunTemplateGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('../templates', __FILE__)
3
+
4
+ argument :template_path, :desc => "Path to an application template"
5
+
6
+ def apply_template
7
+ path = template_path
8
+ unless path =~ /^https?:\/\//
9
+ path = File.expand_path(path, Dir.pwd)
10
+ end
11
+ apply path
12
+ end
13
+ end
@@ -28,7 +28,7 @@ module RailsWizard
28
28
 
29
29
 
30
30
  def resolve_scrolls
31
- @resolve_scrolls ||= scrolls_with_dependencies.sort
31
+ @resolve_scrolls ||= scrolls_with_dependencies.sort.sort.sort # why do the extra sorts to resolve nesting?!
32
32
  end
33
33
 
34
34
  def scroll_classes
data/scrolls/eycloud.rb CHANGED
@@ -1,53 +1,62 @@
1
1
  @name = File.basename(File.expand_path("."))
2
- say_custom "eycloud", "Deploying #{@name} to Engine Yard Cloud..."
3
2
 
4
- # gem 'engineyard-v2', :groups => [:development]
5
- gem 'ey_config'
3
+ gem_group :development do
4
+ gem 'ey_cli'
5
+ gem 'engineyard'
6
+ end
7
+
8
+ gem 'ey_config' # for partner services
9
+
10
+ required_dbs = %w[mysql postgresql]
11
+ required_app_servers = %w[unicorn trinidad passenger puma thin]
12
+
13
+ selected_db = required_dbs.find {|db| scroll? db }
14
+ unless selected_db
15
+ say_custom "eycloud", "Please include a DB choice from: #{required_dbs.join ", "}"
16
+ exit_now = true
17
+ end
6
18
 
7
- unless scroll?("mysql") || scroll?("postgresql")
8
- say_custom "eycloud", "ERROR: To deploy to Engine Yard Cloud, please include 'mysql' or 'postgresql' scroll."
9
- exit 1
19
+ selected_app_server = required_app_servers.find {|app| scroll? app }
20
+ unless selected_app_server
21
+ say_custom "eycloud", "Please include an App Server choice from: #{required_app_servers.join ", "}"
22
+ exit_now = true
10
23
  end
11
24
 
25
+ exit 1 if exit_now
26
+
12
27
  after_everything do
13
- if @mysql_stack
14
- say_custom "eycloud", "Using mysql #{@mysql_stack}"
15
- elsif @postgresql_stack
16
- say_custom "eycloud", "Using postgresql #{@postgresql_stack}"
17
- end
18
-
19
- # run "ey login"
20
- #
21
- # require "yaml"
22
- # require "engineyard" # for EY.ui
23
- # require "engineyard/eyrc" # to load api token
24
- # require "engineyard-cloud-client"
25
- # ey_api = EY::CloudClient.new(EY::EYRC.load.api_token)
26
- #
27
- #
28
- # say_custom "eycloud", "Fetching list of accounts..."
29
- # current_apps = EY::CloudClient::App.all(ey_api)
30
- #
31
- # # TODO check if @git_uri is in current_apps, if not then create app
32
- #
33
- # accounts = current_apps.map(&:account).uniq
34
- # account = multiple_choice("Create app to which Engine Yard Cloud account?", accounts.map {|a| [a.name, a]})
35
- #
36
- # say_custom "eycloud", "Creating application #{@name} on account #{account.name}..."
37
- # app = EY::CloudClient::App.create(ey_api, {
38
- # "account" => account,
39
- # "name" => @name,
40
- # "repository_uri" => @git_uri,
41
- # "app_type_id" => "rails3"
42
- # })
43
- #
44
-
45
- # TODO how to get deploy key?
46
- # How to upload deploy key to github?
28
+ @git_url ||= `git config remote.origin.url`.strip
29
+ if @git_url.size == 0
30
+ say_custom "eycloud", "Skipping... no git URI discovered"
31
+ else
32
+ run "ey login"
33
+
34
+ if @mysql_stack
35
+ say_custom "eycloud", "Using mysql #{@mysql_stack}"
36
+ elsif @postgresql_stack
37
+ say_custom "eycloud", "Using postgresql #{@postgresql_stack}"
38
+ end
47
39
 
48
- # multiple_choice("Let's boot some instances!", [
49
- # [""]
50
- # ])
40
+ framework_env = multiple_choice "Which framework environment?", [%w[Production production], %w[Staging staging]]
41
+
42
+ # TODO check for app name first
43
+ app_name = (@repo_name && @repo_name.size > 0) ? @repo_name : @name
44
+ say_custom "eycloud", "Checking for availability of #{app_name}"
45
+ @app_names ||= `ey_cli apps | grep "-" | sed "s/.* //"`.split(/\n/)
46
+ while @app_names.include?(app_name)
47
+ app_name = ask_wizard "Application #{app_name} is already taken; what"
48
+ end
49
+
50
+ name = File.basename(".")
51
+ command = "ey_cli create_app --name #{app_name} --type rails3 "
52
+ command += "--git #{@git_url} "
53
+ command += "--framework_env #{framework_env} "
54
+ command += "--env_name #{@name}_#{framework_env} "
55
+ command += "--stack #{selected_app_server} "
56
+ command += "--solo"
57
+ run command
58
+
59
+ end
51
60
  end
52
61
 
53
62
  __END__
@@ -56,7 +65,8 @@ name: Engine Yard Cloud
56
65
  description: The Most Powerful Ruby Cloud
57
66
  author: drnic
58
67
 
59
- requires: [github]
60
- run_after: [github]
61
68
  category: deployment
62
69
  exclusive: deployment
70
+
71
+ requires: [github]
72
+ run_after: [github]
data/scrolls/github.rb CHANGED
@@ -1,15 +1,21 @@
1
1
  gem 'github', '>= 0.7.0', :group => [:development]
2
2
 
3
3
  after_everything do
4
- if config["github_private"]
5
- run "bundle exec gh create-from-local --private"
6
- else
7
- run "bundle exec gh create-from-local"
4
+ tried_create_already = false
5
+ while (@git_uri = `git config remote.origin.url`.strip) && @git_uri.size == 0
6
+ if tried_create_already
7
+ @repo_name = ask_wizard "Repository already exists. What project name?"
8
+ else
9
+ @repo_name = ""
10
+ end
11
+ if config["github_private"]
12
+ run "bundle exec gh create-from-local #{@repo_name} --private"
13
+ else
14
+ run "bundle exec gh create-from-local #{@repo_name}"
15
+ end
16
+ tried_create_already = true
8
17
  end
9
-
10
- # TODO - what to do if repo already exists? prompt to override?
11
18
 
12
- @git_uri = `git config remote.origin.url`.strip
13
19
  say_custom "github", "Created repo #{@git_uri}"
14
20
  end
15
21
 
@@ -27,5 +33,6 @@ run_after: [git]
27
33
 
28
34
  config:
29
35
  - github_private:
30
- type: boolean
31
- prompt: "Creating GitHub repository; want it to be private?"
36
+ prompt: "Create a GitHub repository?"
37
+ type: multiple_choice
38
+ choices: [["Public", false], ["Private", true]]
data/scrolls/mysql.rb CHANGED
@@ -8,13 +8,13 @@ end
8
8
 
9
9
  # TODO generate config/database.yml for DBs
10
10
 
11
- if scroll?("eycloud")
12
- mysql_versions = [
13
- ["MySQL 5.0", "mysql_50"],
14
- ["MySQL 5.5 (beta)", "mysql_55"]
15
- ]
16
- @mysql_stack = multiple_choice("Create app to which Engine Yard Cloud account?", mysql_versions)
17
- end
11
+ # if scroll?("eycloud")
12
+ # mysql_versions = [
13
+ # ["MySQL 5.0", "mysql_50"],
14
+ # ["MySQL 5.5 (beta)", "mysql_55"]
15
+ # ]
16
+ # @mysql_stack = multiple_choice("Create app to which Engine Yard Cloud account?", mysql_versions)
17
+ # end
18
18
 
19
19
  __END__
20
20
 
@@ -0,0 +1,10 @@
1
+
2
+ __END__
3
+
4
+ name: Passenger
5
+ description: Use Passenger app server
6
+ author: drnic
7
+ website:
8
+
9
+ category: deployment
10
+ exclusive: appserver
data/scrolls/puma.rb CHANGED
@@ -5,6 +5,7 @@ __END__
5
5
  name: Puma
6
6
  description: Ruby web server built for speed & concurrency
7
7
  author: drnic
8
+ website: http://puma.io
8
9
 
9
10
  category: deployment
10
11
  exclusive: appserver
@@ -0,0 +1,31 @@
1
+ gem_group :assets do
2
+ gem 'twitter-bootstrap-rails'
3
+ end
4
+
5
+ after_bundler do
6
+ generate "bootstrap:install"
7
+ layout = config["twitter_bootstrap_layout"]
8
+ generate "bootstrap:layout #{layout}"
9
+ gsub_file "app/controllers/application_controller.rb", /class ApplicationController < ActionController::Base/, <<-RUBY
10
+ class ApplicationController < ActionController::Base
11
+ layout "#{layout}"
12
+ RUBY
13
+
14
+ end
15
+
16
+ __END__
17
+
18
+ name: Twitter Bootstrap Rails
19
+ description: Add Twitter Bootstrap CSS
20
+
21
+ category: stylesheet
22
+ exclusive: stylesheet
23
+ tags: [css, stylesheet]
24
+
25
+ config:
26
+ - twitter_bootstrap_layout:
27
+ prompt: "Which Twitter Bootstrap layout?"
28
+ type: multiple_choice
29
+ choices: [["Fluid", "fluid"], ["Fixed", "fixed"]]
30
+
31
+
@@ -1,4 +1,6 @@
1
1
  gem 'twitter-bootstrap-rails', :git => 'https://github.com/jonochang/twitter-bootstrap-rails.git'
2
+ # TODO only in :group => :assets
3
+ # TODO if jruby, then use static assets
2
4
 
3
5
  if config['use_simple_form']
4
6
  after_everything do
data/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RailsWizard
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ey_rails_wizard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-27 00:00:00.000000000 Z
13
+ date: 2012-03-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: i18n
17
- requirement: &70322801643620 !ruby/object:Gem::Requirement
17
+ requirement: &70162210574060 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,21 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70322801643620
25
+ version_requirements: *70162210574060
26
+ - !ruby/object:Gem::Dependency
27
+ name: json
28
+ requirement: &70162210573480 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - =
32
+ - !ruby/object:Gem::Version
33
+ version: 1.6.5
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *70162210573480
26
37
  - !ruby/object:Gem::Dependency
27
38
  name: activesupport
28
- requirement: &70322801643120 !ruby/object:Gem::Requirement
39
+ requirement: &70162210572960 !ruby/object:Gem::Requirement
29
40
  none: false
30
41
  requirements:
31
42
  - - ~>
@@ -33,10 +44,10 @@ dependencies:
33
44
  version: '3.0'
34
45
  type: :runtime
35
46
  prerelease: false
36
- version_requirements: *70322801643120
47
+ version_requirements: *70162210572960
37
48
  - !ruby/object:Gem::Dependency
38
49
  name: thor
39
- requirement: &70322801642700 !ruby/object:Gem::Requirement
50
+ requirement: &70162210572580 !ruby/object:Gem::Requirement
40
51
  none: false
41
52
  requirements:
42
53
  - - ! '>='
@@ -44,10 +55,10 @@ dependencies:
44
55
  version: '0'
45
56
  type: :runtime
46
57
  prerelease: false
47
- version_requirements: *70322801642700
58
+ version_requirements: *70162210572580
48
59
  - !ruby/object:Gem::Dependency
49
60
  name: rspec
50
- requirement: &70322801642160 !ruby/object:Gem::Requirement
61
+ requirement: &70162210572040 !ruby/object:Gem::Requirement
51
62
  none: false
52
63
  requirements:
53
64
  - - ~>
@@ -55,10 +66,10 @@ dependencies:
55
66
  version: 2.5.0
56
67
  type: :development
57
68
  prerelease: false
58
- version_requirements: *70322801642160
69
+ version_requirements: *70162210572040
59
70
  - !ruby/object:Gem::Dependency
60
71
  name: bundler
61
- requirement: &70322801641660 !ruby/object:Gem::Requirement
72
+ requirement: &70162210571540 !ruby/object:Gem::Requirement
62
73
  none: false
63
74
  requirements:
64
75
  - - ~>
@@ -66,10 +77,10 @@ dependencies:
66
77
  version: 1.1.0
67
78
  type: :development
68
79
  prerelease: false
69
- version_requirements: *70322801641660
80
+ version_requirements: *70162210571540
70
81
  - !ruby/object:Gem::Dependency
71
82
  name: rails
72
- requirement: &70322801657580 !ruby/object:Gem::Requirement
83
+ requirement: &70162210571080 !ruby/object:Gem::Requirement
73
84
  none: false
74
85
  requirements:
75
86
  - - ! '>='
@@ -77,10 +88,10 @@ dependencies:
77
88
  version: 3.0.0
78
89
  type: :development
79
90
  prerelease: false
80
- version_requirements: *70322801657580
91
+ version_requirements: *70162210571080
81
92
  - !ruby/object:Gem::Dependency
82
93
  name: ZenTest
83
- requirement: &70322801657200 !ruby/object:Gem::Requirement
94
+ requirement: &70162210570700 !ruby/object:Gem::Requirement
84
95
  none: false
85
96
  requirements:
86
97
  - - ! '>='
@@ -88,7 +99,7 @@ dependencies:
88
99
  version: '0'
89
100
  type: :development
90
101
  prerelease: false
91
- version_requirements: *70322801657200
102
+ version_requirements: *70162210570700
92
103
  description: Quickly and easily create Rails application templates featuring dozens
93
104
  of popular libraries tuned for Engine Yard Cloud
94
105
  email:
@@ -110,6 +121,9 @@ files:
110
121
  - autotest/discover.rb
111
122
  - bin/ey_rails_wizard
112
123
  - ey_rails_wizard.gemspec
124
+ - lib/rails/generators/.DS_Store
125
+ - lib/rails/generators/run_template/USAGE
126
+ - lib/rails/generators/run_template/run_template_generator.rb
113
127
  - lib/rails_wizard.rb
114
128
  - lib/rails_wizard/command.rb
115
129
  - lib/rails_wizard/config.rb
@@ -157,6 +171,7 @@ files:
157
171
  - scrolls/oa_oauth.rb
158
172
  - scrolls/omniauth.rb
159
173
  - scrolls/paper_trail.rb
174
+ - scrolls/passenger.rb
160
175
  - scrolls/pow.rb
161
176
  - scrolls/prototype.rb
162
177
  - scrolls/puma.rb
@@ -181,7 +196,8 @@ files:
181
196
  - scrolls/test_unit.rb
182
197
  - scrolls/thin.rb
183
198
  - scrolls/thinking_sphinx.rb
184
- - scrolls/twitter_bootstrap_rails.rb
199
+ - scrolls/twitter_bootstrap.rb
200
+ - scrolls/twitter_bootstrap_rails_v1.rb
185
201
  - scrolls/unicorn.rb
186
202
  - spec/rails_wizard/config_spec.rb
187
203
  - spec/rails_wizard/recipe_spec.rb
@@ -210,7 +226,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
226
  version: '0'
211
227
  segments:
212
228
  - 0
213
- hash: 848829872170895105
229
+ hash: 2342862746662081785
214
230
  required_rubygems_version: !ruby/object:Gem::Requirement
215
231
  none: false
216
232
  requirements:
@@ -219,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
235
  version: '0'
220
236
  segments:
221
237
  - 0
222
- hash: 848829872170895105
238
+ hash: 2342862746662081785
223
239
  requirements: []
224
240
  rubyforge_project:
225
241
  rubygems_version: 1.8.17