intersect_rails_composer 0.0.2

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 (43) hide show
  1. checksums.yaml +7 -0
  2. data/README.textile +433 -0
  3. data/bin/intersect_rails_composer +7 -0
  4. data/lib/rails_wizard/command.rb +204 -0
  5. data/lib/rails_wizard/config.rb +88 -0
  6. data/lib/rails_wizard/diagnostics.rb +68 -0
  7. data/lib/rails_wizard/recipe.rb +114 -0
  8. data/lib/rails_wizard/recipes.rb +56 -0
  9. data/lib/rails_wizard/template.rb +111 -0
  10. data/lib/rails_wizard.rb +7 -0
  11. data/recipes/apps4.rb +150 -0
  12. data/recipes/controllers.rb +75 -0
  13. data/recipes/core.rb +14 -0
  14. data/recipes/email.rb +110 -0
  15. data/recipes/example.rb +70 -0
  16. data/recipes/extras.rb +187 -0
  17. data/recipes/frontend.rb +45 -0
  18. data/recipes/gems.rb +277 -0
  19. data/recipes/git.rb +20 -0
  20. data/recipes/init.rb +136 -0
  21. data/recipes/models.rb +109 -0
  22. data/recipes/prelaunch.rb +119 -0
  23. data/recipes/railsapps.rb +277 -0
  24. data/recipes/readme.rb +85 -0
  25. data/recipes/routes.rb +45 -0
  26. data/recipes/saas.rb +218 -0
  27. data/recipes/setup.rb +134 -0
  28. data/recipes/testing.rb +276 -0
  29. data/recipes/views.rb +57 -0
  30. data/spec/rails_wizard/config_spec.rb +108 -0
  31. data/spec/rails_wizard/recipe_spec.rb +115 -0
  32. data/spec/rails_wizard/recipes/sanity_spec.rb +30 -0
  33. data/spec/rails_wizard/recipes_spec.rb +41 -0
  34. data/spec/rails_wizard/template_spec.rb +92 -0
  35. data/spec/spec_helper.rb +11 -0
  36. data/spec/support/rails_directory.rb +17 -0
  37. data/spec/support/template_runner.rb +28 -0
  38. data/spec/test_recipes/test_recipe_in_file.rb +9 -0
  39. data/templates/helpers.erb +135 -0
  40. data/templates/layout.erb +232 -0
  41. data/templates/recipe.erb +13 -0
  42. data/version.rb +3 -0
  43. metadata +210 -0
@@ -0,0 +1,232 @@
1
+ # >---------------------------------------------------------------------------<
2
+ #
3
+ # _____ _ _
4
+ # | __ \ (_) | /\
5
+ # | |__) |__ _ _| |___ / \ _ __ _ __ ___
6
+ # | _ // _` | | / __| / /\ \ | '_ \| '_ \/ __|
7
+ # | | \ \ (_| | | \__ \/ ____ \| |_) | |_) \__ \
8
+ # |_| \_\__,_|_|_|___/_/ \_\ .__/| .__/|___/
9
+ # | | | |
10
+ # |_| |_|
11
+ #
12
+ # Application template generated by the rails_apps_composer gem.
13
+ # Restrain your impulse to make changes to this file; instead,
14
+ # make changes to the recipes in the rails_apps_composer gem.
15
+ #
16
+ # For more information, see:
17
+ # https://github.com/RailsApps/rails_apps_composer/
18
+ #
19
+ # Thank you to Michael Bleigh for leading the way with the RailsWizard gem.
20
+ #
21
+ # Primarily generated by file:
22
+ # https://github.com/RailsApps/rails_apps_composer/templates/layout.erb
23
+ #
24
+ # >---------------------------------------------------------------------------<
25
+
26
+ # >----------------------------[ Initial Setup ]------------------------------<
27
+
28
+ module Gemfile
29
+ class GemInfo
30
+ def initialize(name) @name=name; @group=[]; @opts={}; end
31
+ attr_accessor :name, :version
32
+ attr_reader :group, :opts
33
+
34
+ def opts=(new_opts={})
35
+ new_group = new_opts.delete(:group)
36
+ if (new_group && self.group != new_group)
37
+ @group = ([self.group].flatten + [new_group].flatten).compact.uniq.sort
38
+ end
39
+ @opts = (self.opts || {}).merge(new_opts)
40
+ end
41
+
42
+ def group_key() @group end
43
+
44
+ def gem_args_string
45
+ args = ["'#{@name}'"]
46
+ args << "'#{@version}'" if @version
47
+ @opts.each do |name,value|
48
+ args << ":#{name}=>#{value.inspect}"
49
+ end
50
+ args.join(', ')
51
+ end
52
+ end
53
+
54
+ @geminfo = {}
55
+
56
+ class << self
57
+ # add(name, version, opts={})
58
+ def add(name, *args)
59
+ name = name.to_s
60
+ version = args.first && !args.first.is_a?(Hash) ? args.shift : nil
61
+ opts = args.first && args.first.is_a?(Hash) ? args.shift : {}
62
+ @geminfo[name] = (@geminfo[name] || GemInfo.new(name)).tap do |info|
63
+ info.version = version if version
64
+ info.opts = opts
65
+ end
66
+ end
67
+
68
+ def write
69
+ File.open('Gemfile', 'a') do |file|
70
+ file.puts
71
+ grouped_gem_names.sort.each do |group, gem_names|
72
+ indent = ""
73
+ unless group.empty?
74
+ file.puts "group :#{group.join(', :')} do" unless group.empty?
75
+ indent=" "
76
+ end
77
+ gem_names.sort.each do |gem_name|
78
+ file.puts "#{indent}gem #{@geminfo[gem_name].gem_args_string}"
79
+ end
80
+ file.puts "end" unless group.empty?
81
+ file.puts
82
+ end
83
+ end
84
+ end
85
+
86
+ private
87
+ #returns {group=>[...gem names...]}, ie {[:development, :test]=>['rspec-rails', 'mocha'], :assets=>[], ...}
88
+ def grouped_gem_names
89
+ {}.tap do |_groups|
90
+ @geminfo.each do |gem_name, geminfo|
91
+ (_groups[geminfo.group_key] ||= []).push(gem_name)
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ def add_gem(*all) Gemfile.add(*all); end
98
+
99
+ @recipes = <%= resolve_recipes.map(&:key).inspect %>
100
+ @prefs = <%= resolve_preferences %>
101
+ @gems = <%= resolve_gems %>
102
+ @diagnostics_recipes = <%= resolve_diagnostics_recipes %>
103
+ @diagnostics_prefs = <%= resolve_diagnostics_prefs %>
104
+ diagnostics = {}
105
+
106
+ # ><%= ' templates/helpers.erb '.center(75,'-').chomp %>start<
107
+ <%= render('helpers').chomp %>
108
+ # ><%= ' templates/helpers.erb '.center(75,'-').chomp %>end<
109
+
110
+ if diagnostics_recipes.sort.include? recipes.sort
111
+ diagnostics[:recipes] = 'success'
112
+ say_wizard("WOOT! The recipes you've selected are known to work together.")
113
+ else
114
+ diagnostics[:recipes] = 'fail'
115
+ say_wizard("\033[1m\033[36m" + "WARNING! The recipes you've selected might not work together." + "\033[0m")
116
+ say_wizard("Help us out by reporting whether this combination works or fails.")
117
+ say_wizard("Please open an issue for rails_apps_composer on GitHub.")
118
+ say_wizard("Your new application will contain diagnostics in its README file.")
119
+ say_wizard("Continuing...")
120
+ end
121
+
122
+ # this application template only supports Rails version 3.1 and newer
123
+ case Rails::VERSION::MAJOR.to_s
124
+ when "3"
125
+ case Rails::VERSION::MINOR.to_s
126
+ when "0"
127
+ say_wizard "You are using Rails version #{Rails::VERSION::STRING} which is not supported. Try 3.1 or newer."
128
+ raise StandardError.new "Rails #{Rails::VERSION::STRING} is not supported. Try 3.1 or newer."
129
+ end
130
+ when "4"
131
+ say_wizard "You are using Rails version #{Rails::VERSION::STRING}."
132
+ else
133
+ say_wizard "You are using Rails version #{Rails::VERSION::STRING} which is not supported. Try 3.1 or newer."
134
+ raise StandardError.new "Rails #{Rails::VERSION::STRING} is not supported. Try 3.1 or newer."
135
+ end
136
+
137
+ say_wizard "Using rails_apps_composer recipes to generate an application."
138
+
139
+ # >---------------------------[ Autoload Modules/Classes ]-----------------------------<
140
+
141
+ inject_into_file 'config/application.rb', :after => 'config.autoload_paths += %W(#{config.root}/extras)' do <<-'RUBY'
142
+
143
+ config.autoload_paths += %W(#{config.root}/lib)
144
+ RUBY
145
+ end
146
+
147
+ # >---------------------------------[ Recipes ]----------------------------------<
148
+ <% resolve_recipes.each do |recipe| %>
149
+ <%= render('recipe', recipe.get_binding).chomp %>
150
+ <% end
151
+ %>
152
+
153
+ # >-----------------------------[ Final Gemfile Write ]------------------------------<
154
+ Gemfile.write
155
+
156
+ # >---------------------------------[ Diagnostics ]----------------------------------<
157
+
158
+ # remove prefs which are diagnostically irrelevant
159
+ redacted_prefs = prefs.clone
160
+ redacted_prefs.delete(:ban_spiders)
161
+ redacted_prefs.delete(:better_errors)
162
+ redacted_prefs.delete(:dev_webserver)
163
+ redacted_prefs.delete(:git)
164
+ redacted_prefs.delete(:github)
165
+ redacted_prefs.delete(:jsruntime)
166
+ redacted_prefs.delete(:local_env_file)
167
+ redacted_prefs.delete(:main_branch)
168
+ redacted_prefs.delete(:prelaunch_branch)
169
+ redacted_prefs.delete(:prod_webserver)
170
+ redacted_prefs.delete(:quiet_assets)
171
+ redacted_prefs.delete(:rvmrc)
172
+ redacted_prefs.delete(:templates)
173
+
174
+ if diagnostics_prefs.include? redacted_prefs
175
+ diagnostics[:prefs] = 'success'
176
+ else
177
+ diagnostics[:prefs] = 'fail'
178
+ end
179
+
180
+ <% if custom_code? %># >-----------------------------[ Custom Code ]-------------------------------<
181
+
182
+ <%= custom_code
183
+ %><% end
184
+ %>@current_recipe = nil
185
+
186
+ # >-----------------------------[ Run 'Bundle Install' ]-------------------------------<
187
+
188
+ say_wizard "Installing gems. This will take a while."
189
+ run 'bundle install --without production'
190
+ say_wizard "Updating gem paths."
191
+ Gem.clear_paths
192
+ # >-----------------------------[ Run 'After Bundler' Callbacks ]-------------------------------<
193
+
194
+ say_wizard "Running 'after bundler' callbacks."
195
+ if prefer :templates, 'haml'
196
+ say_wizard "importing html2haml conversion tool"
197
+ require 'html2haml'
198
+ end
199
+ if prefer :templates, 'slim'
200
+ say_wizard "importing html2haml and haml2slim conversion tools"
201
+ require 'html2haml'
202
+ require 'haml2slim'
203
+ end
204
+ @after_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; puts @current_recipe; b[1].call}
205
+
206
+ # >-----------------------------[ Run 'After Everything' Callbacks ]-------------------------------<
207
+
208
+ @current_recipe = nil
209
+ say_wizard "Running 'after everything' callbacks."
210
+ @after_everything_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; puts @current_recipe; b[1].call}
211
+
212
+ @current_recipe = nil
213
+ if diagnostics[:recipes] == 'success'
214
+ say_wizard("WOOT! The recipes you've selected are known to work together.")
215
+ say_wizard("If they don't, open an issue for rails_apps_composer on GitHub.")
216
+ else
217
+ say_wizard("\033[1m\033[36m" + "WARNING! The recipes you've selected might not work together." + "\033[0m")
218
+ say_wizard("Help us out by reporting whether this combination works or fails.")
219
+ say_wizard("Please open an issue for rails_apps_composer on GitHub.")
220
+ say_wizard("Your new application will contain diagnostics in its README file.")
221
+ end
222
+ if diagnostics[:prefs] == 'success'
223
+ say_wizard("WOOT! The preferences you've selected are known to work together.")
224
+ say_wizard("If they don't, open an issue for rails_apps_composer on GitHub.")
225
+ else
226
+ say_wizard("\033[1m\033[36m" + "WARNING! The preferences you've selected might not work together." + "\033[0m")
227
+ say_wizard("Help us out by reporting whether this combination works or fails.")
228
+ say_wizard("Please open an issue for rails_apps_composer on GitHub.")
229
+ say_wizard("Your new application will contain diagnostics in its README file.")
230
+ end
231
+ say_wizard "Finished running the rails_apps_composer app template."
232
+ say_wizard "Your new Rails app is ready. Time to run 'bundle install'."
@@ -0,0 +1,13 @@
1
+ # ><%= ' templates/recipe.erb '.center(75,'-').chomp %>start<
2
+ # ><%= "[ #{name} ]".center(75,'-').chomp %><
3
+ @current_recipe = "<%= key %>"
4
+ @before_configs["<%= key %>"].call if @before_configs["<%= key %>"]
5
+ say_recipe '<%= name %>'
6
+ <%=
7
+ config.compile + "\n" if config
8
+ %>@configs[@current_recipe] = config
9
+ # ><%= " recipes/#{name}.rb ".center(75,'-').chomp %>start<
10
+
11
+ <%= template %>
12
+ # ><%= " recipes/#{name}.rb ".center(75,'-').chomp %>end<
13
+ # ><%= ' templates/recipe.erb '.center(75,'-').chomp %>end<
data/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module RailsWizard
2
+ VERSION = "2.4.12"
3
+ end
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: intersect_rails_composer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Marc Ziani de Ferranti
8
+ - Charles Shao
9
+ - Sean Lin
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-11-05 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: i18n
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: activesupport
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: thor
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rake
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rspec
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: mg
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: activesupport
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: i18n
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ description: A gem with default recipes to create rails application templates you
128
+ can use to generate rails applications
129
+ email:
130
+ - marc@intersect.org.au
131
+ executables:
132
+ - intersect_rails_composer
133
+ extensions: []
134
+ extra_rdoc_files: []
135
+ files:
136
+ - lib/rails_wizard/command.rb
137
+ - lib/rails_wizard/config.rb
138
+ - lib/rails_wizard/diagnostics.rb
139
+ - lib/rails_wizard/recipe.rb
140
+ - lib/rails_wizard/recipes.rb
141
+ - lib/rails_wizard/template.rb
142
+ - lib/rails_wizard.rb
143
+ - recipes/apps4.rb
144
+ - recipes/controllers.rb
145
+ - recipes/core.rb
146
+ - recipes/email.rb
147
+ - recipes/example.rb
148
+ - recipes/extras.rb
149
+ - recipes/frontend.rb
150
+ - recipes/gems.rb
151
+ - recipes/git.rb
152
+ - recipes/init.rb
153
+ - recipes/models.rb
154
+ - recipes/prelaunch.rb
155
+ - recipes/railsapps.rb
156
+ - recipes/readme.rb
157
+ - recipes/routes.rb
158
+ - recipes/saas.rb
159
+ - recipes/setup.rb
160
+ - recipes/testing.rb
161
+ - recipes/views.rb
162
+ - README.textile
163
+ - version.rb
164
+ - templates/helpers.erb
165
+ - templates/layout.erb
166
+ - templates/recipe.erb
167
+ - spec/rails_wizard/config_spec.rb
168
+ - spec/rails_wizard/recipe_spec.rb
169
+ - spec/rails_wizard/recipes/sanity_spec.rb
170
+ - spec/rails_wizard/recipes_spec.rb
171
+ - spec/rails_wizard/template_spec.rb
172
+ - spec/spec_helper.rb
173
+ - spec/support/rails_directory.rb
174
+ - spec/support/template_runner.rb
175
+ - spec/test_recipes/test_recipe_in_file.rb
176
+ - bin/intersect_rails_composer
177
+ homepage: https://github.com/IntersectAustralia/intersect_rails_composer
178
+ licenses:
179
+ - MIT
180
+ metadata: {}
181
+ post_install_message:
182
+ rdoc_options: []
183
+ require_paths:
184
+ - lib
185
+ required_ruby_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ requirements: []
196
+ rubyforge_project: intersect_rails_composer
197
+ rubygems_version: 2.0.6
198
+ signing_key:
199
+ specification_version: 4
200
+ summary: Intersect rails application composer
201
+ test_files:
202
+ - spec/rails_wizard/config_spec.rb
203
+ - spec/rails_wizard/recipe_spec.rb
204
+ - spec/rails_wizard/recipes/sanity_spec.rb
205
+ - spec/rails_wizard/recipes_spec.rb
206
+ - spec/rails_wizard/template_spec.rb
207
+ - spec/spec_helper.rb
208
+ - spec/support/rails_directory.rb
209
+ - spec/support/template_runner.rb
210
+ - spec/test_recipes/test_recipe_in_file.rb