redmint_composer 2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/README.textile +10 -0
  3. data/bin/redmint_composer +7 -0
  4. data/lib/rails_wizard.rb +7 -0
  5. data/lib/rails_wizard/command.rb +204 -0
  6. data/lib/rails_wizard/config.rb +88 -0
  7. data/lib/rails_wizard/diagnostics.rb +58 -0
  8. data/lib/rails_wizard/recipe.rb +114 -0
  9. data/lib/rails_wizard/recipes.rb +56 -0
  10. data/lib/rails_wizard/template.rb +111 -0
  11. data/recipes/admin.rb +42 -0
  12. data/recipes/analytics.rb +41 -0
  13. data/recipes/core.rb +32 -0
  14. data/recipes/deployment.rb +178 -0
  15. data/recipes/devise.rb +34 -0
  16. data/recipes/email.rb +65 -0
  17. data/recipes/email_dev.rb +92 -0
  18. data/recipes/example.rb +63 -0
  19. data/recipes/extras.rb +283 -0
  20. data/recipes/frontend.rb +33 -0
  21. data/recipes/gems.rb +274 -0
  22. data/recipes/git.rb +27 -0
  23. data/recipes/init.rb +179 -0
  24. data/recipes/learn_rails.rb +89 -0
  25. data/recipes/locale.rb +31 -0
  26. data/recipes/omniauth.rb +38 -0
  27. data/recipes/pages.rb +91 -0
  28. data/recipes/rails_bootstrap.rb +29 -0
  29. data/recipes/rails_devise.rb +26 -0
  30. data/recipes/rails_devise_pundit.rb +25 -0
  31. data/recipes/rails_devise_roles.rb +25 -0
  32. data/recipes/rails_foundation.rb +29 -0
  33. data/recipes/rails_mailinglist_activejob.rb +76 -0
  34. data/recipes/rails_omniauth.rb +27 -0
  35. data/recipes/rails_signup_download.rb +69 -0
  36. data/recipes/rails_stripe_checkout.rb +84 -0
  37. data/recipes/rails_stripe_coupons.rb +125 -0
  38. data/recipes/rails_stripe_membership_saas.rb +112 -0
  39. data/recipes/railsapps.rb +77 -0
  40. data/recipes/readme.rb +161 -0
  41. data/recipes/roles.rb +40 -0
  42. data/recipes/setup.rb +162 -0
  43. data/recipes/tests.rb +59 -0
  44. data/spec/rails_wizard/config_spec.rb +108 -0
  45. data/spec/rails_wizard/recipe_spec.rb +115 -0
  46. data/spec/rails_wizard/recipes/sanity_spec.rb +30 -0
  47. data/spec/rails_wizard/recipes_spec.rb +41 -0
  48. data/spec/rails_wizard/template_spec.rb +92 -0
  49. data/spec/spec_helper.rb +11 -0
  50. data/spec/support/rails_directory.rb +17 -0
  51. data/spec/support/template_runner.rb +28 -0
  52. data/spec/test_recipes/test_recipe_in_file.rb +9 -0
  53. data/templates/helpers.erb +138 -0
  54. data/templates/layout.erb +231 -0
  55. data/templates/recipe.erb +13 -0
  56. data/version.rb +3 -0
  57. metadata +201 -0
@@ -0,0 +1,231 @@
1
+ # >---------------------------------------------------------------------------<
2
+ #
3
+ # _____ _ _
4
+ # | __ \ (_) | /\
5
+ # | |__) |__ _ _| |___ / \ _ __ _ __ ___
6
+ # | _ // _` | | / __| / /\ \ | '_ \| '_ \/ __|
7
+ # | | \ \ (_| | | \__ \/ ____ \| |_) | |_) \__ \
8
+ # |_| \_\__,_|_|_|___/_/ \_\ .__/| .__/|___/
9
+ # | | | |
10
+ # |_| |_|
11
+ #
12
+ # Application template generated by the redmint_composer gem.
13
+ # Restrain your impulse to make changes to this file; instead,
14
+ # make changes to the recipes in the redmint_composer gem.
15
+ #
16
+ # For more information, see:
17
+ # https://github.com/adrianescat/redmint_composer
18
+ #
19
+ # Thank you to Michael Bleigh for leading the way with the RailsWizard gem.
20
+ #
21
+ # >---------------------------------------------------------------------------<
22
+
23
+ # >----------------------------[ Initial Setup ]------------------------------<
24
+
25
+ module Gemfile
26
+ class GemInfo
27
+ def initialize(name) @name=name; @group=[]; @opts={}; end
28
+ attr_accessor :name, :version
29
+ attr_reader :group, :opts
30
+
31
+ def opts=(new_opts={})
32
+ new_group = new_opts.delete(:group)
33
+ if (new_group && self.group != new_group)
34
+ @group = ([self.group].flatten + [new_group].flatten).compact.uniq.sort
35
+ end
36
+ @opts = (self.opts || {}).merge(new_opts)
37
+ end
38
+
39
+ def group_key() @group end
40
+
41
+ def gem_args_string
42
+ args = ["'#{@name}'"]
43
+ args << "'#{@version}'" if @version
44
+ @opts.each do |name,value|
45
+ args << ":#{name}=>#{value.inspect}"
46
+ end
47
+ args.join(', ')
48
+ end
49
+ end
50
+
51
+ @geminfo = {}
52
+
53
+ class << self
54
+ # add(name, version, opts={})
55
+ def add(name, *args)
56
+ name = name.to_s
57
+ version = args.first && !args.first.is_a?(Hash) ? args.shift : nil
58
+ opts = args.first && args.first.is_a?(Hash) ? args.shift : {}
59
+ @geminfo[name] = (@geminfo[name] || GemInfo.new(name)).tap do |info|
60
+ info.version = version if version
61
+ info.opts = opts
62
+ end
63
+ end
64
+
65
+ def write
66
+ File.open('Gemfile', 'a') do |file|
67
+ file.puts
68
+ grouped_gem_names.sort.each do |group, gem_names|
69
+ indent = ""
70
+ unless group.empty?
71
+ file.puts "group :#{group.join(', :')} do" unless group.empty?
72
+ indent=" "
73
+ end
74
+ gem_names.sort.each do |gem_name|
75
+ file.puts "#{indent}gem #{@geminfo[gem_name].gem_args_string}"
76
+ end
77
+ file.puts "end" unless group.empty?
78
+ file.puts
79
+ end
80
+ end
81
+ end
82
+
83
+ private
84
+ #returns {group=>[...gem names...]}, ie {[:development, :test]=>['rspec-rails', 'mocha'], :assets=>[], ...}
85
+ def grouped_gem_names
86
+ {}.tap do |_groups|
87
+ @geminfo.each do |gem_name, geminfo|
88
+ (_groups[geminfo.group_key] ||= []).push(gem_name)
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ def add_gem(*all) Gemfile.add(*all); end
95
+
96
+ @recipes = <%= resolve_recipes.map(&:key).inspect %>
97
+ @prefs = <%= resolve_preferences %>
98
+ @gems = <%= resolve_gems %>
99
+ @diagnostics_recipes = <%= resolve_diagnostics_recipes %>
100
+ @diagnostics_prefs = <%= resolve_diagnostics_prefs %>
101
+ diagnostics = {}
102
+
103
+ # ><%= ' templates/helpers.erb '.center(75,'-').chomp %>start<
104
+ <%= render('helpers').chomp %>
105
+ # ><%= ' templates/helpers.erb '.center(75,'-').chomp %>end<
106
+
107
+ say_wizard("\033[1m\033[36m" + "" + "\033[0m")
108
+
109
+ say_wizard("\033[1m\033[36m" + ' _____ _ _' + "\033[0m")
110
+ say_wizard("\033[1m\033[36m" + "| __ \\ \(_\) | /\\" + "\033[0m")
111
+ say_wizard("\033[1m\033[36m" + "| |__) |__ _ _| |___ / \\ _ __ _ __ ___" + "\033[0m")
112
+ say_wizard("\033[1m\033[36m" + "| _ /\/ _` | | / __| / /\\ \\ | \'_ \| \'_ \\/ __|" + "\033[0m")
113
+ say_wizard("\033[1m\033[36m" + "| | \\ \\ (_| | | \\__ \\/ ____ \\| |_) | |_) \\__ \\" + "\033[0m")
114
+ say_wizard("\033[1m\033[36m" + "|_| \\_\\__,_|_|_|___/_/ \\_\\ .__/| .__/|___/" + "\033[0m")
115
+ say_wizard("\033[1m\033[36m" + " \| \| \| \|" + "\033[0m")
116
+ say_wizard("\033[1m\033[36m" + " \| \| \| \|" + "\033[0m")
117
+ say_wizard("\033[1m\033[36m" + '' + "\033[0m")
118
+ say_wizard("\033[1m\033[36m" + "Rails Composer, open source, supported by subscribers." + "\033[0m")
119
+ say_wizard("\033[1m\033[36m" + "Please join RailsApps to support development of Rails Composer." + "\033[0m")
120
+ say_wizard("Need help? Ask on Stack Overflow with the tag \'railsapps.\'")
121
+ say_wizard("Your new application will contain diagnostics in its README file.")
122
+
123
+ if diagnostics_recipes.sort.include? recipes.sort
124
+ diagnostics[:recipes] = 'success'
125
+ else
126
+ diagnostics[:recipes] = 'fail'
127
+ end
128
+
129
+ # this application template only supports Rails version 4.1 and newer
130
+ case Rails::VERSION::MAJOR.to_s
131
+ when "3"
132
+ say_wizard "You are using Rails version #{Rails::VERSION::STRING} which is not supported. Use Rails 4.1 or newer."
133
+ raise StandardError.new "Rails #{Rails::VERSION::STRING} is not supported. Use Rails 4.1 or newer."
134
+ when "4"
135
+ case Rails::VERSION::MINOR.to_s
136
+ when "0"
137
+ say_wizard "You are using Rails version #{Rails::VERSION::STRING} which is not supported. Use Rails 4.1 or newer."
138
+ raise StandardError.new "Rails #{Rails::VERSION::STRING} is not supported. Use Rails 4.1 or newer."
139
+ end
140
+ else
141
+ say_wizard "You are using Rails version #{Rails::VERSION::STRING} which is not supported. Use Rails 4.1 or newer."
142
+ raise StandardError.new "Rails #{Rails::VERSION::STRING} is not supported. Use Rails 4.1 or newer."
143
+ end
144
+
145
+ # >---------------------------[ Autoload Modules/Classes ]-----------------------------<
146
+
147
+ inject_into_file 'config/application.rb', :after => 'config.autoload_paths += %W(#{config.root}/extras)' do <<-'RUBY'
148
+
149
+ config.autoload_paths += %W(#{config.root}/lib)
150
+ RUBY
151
+ end
152
+
153
+ # >---------------------------------[ Recipes ]----------------------------------<
154
+ <% resolve_recipes.each do |recipe| %>
155
+ <%= render('recipe', recipe.get_binding).chomp %>
156
+ <% end
157
+ %>
158
+
159
+ # >-----------------------------[ Final Gemfile Write ]------------------------------<
160
+ Gemfile.write
161
+
162
+ # >---------------------------------[ Diagnostics ]----------------------------------<
163
+
164
+ # remove prefs which are diagnostically irrelevant
165
+ redacted_prefs = prefs.clone
166
+ redacted_prefs.delete(:ban_spiders)
167
+ redacted_prefs.delete(:better_errors)
168
+ redacted_prefs.delete(:pry)
169
+ redacted_prefs.delete(:dev_webserver)
170
+ redacted_prefs.delete(:git)
171
+ redacted_prefs.delete(:github)
172
+ redacted_prefs.delete(:jsruntime)
173
+ redacted_prefs.delete(:local_env_file)
174
+ redacted_prefs.delete(:main_branch)
175
+ redacted_prefs.delete(:prelaunch_branch)
176
+ redacted_prefs.delete(:prod_webserver)
177
+ redacted_prefs.delete(:quiet_assets)
178
+ redacted_prefs.delete(:rvmrc)
179
+ redacted_prefs.delete(:templates)
180
+
181
+ if diagnostics_prefs.include? redacted_prefs
182
+ diagnostics[:prefs] = 'success'
183
+ else
184
+ diagnostics[:prefs] = 'fail'
185
+ end
186
+
187
+ <% if custom_code? %># >-----------------------------[ Custom Code ]-------------------------------<
188
+
189
+ <%= custom_code
190
+ %><% end
191
+ %>@current_recipe = nil
192
+
193
+ # >-----------------------------[ Run 'Bundle Install' ]-------------------------------<
194
+
195
+ say_wizard "Installing Bundler (in case it is not installed)."
196
+ run 'gem install bundler'
197
+ say_wizard "Installing gems. This will take a while."
198
+ run 'bundle install --without production'
199
+ say_wizard "Updating gem paths."
200
+ Gem.clear_paths
201
+ # >-----------------------------[ Run 'stage_two' Callbacks ]-------------------------------<
202
+
203
+ say_wizard "Stage Two (running recipe 'stage_two' callbacks)."
204
+ if prefer :templates, 'haml'
205
+ say_wizard "importing html2haml conversion tool"
206
+ require 'html2haml'
207
+ end
208
+ if prefer :templates, 'slim'
209
+ say_wizard "importing html2haml and haml2slim conversion tools"
210
+ require 'html2haml'
211
+ require 'haml2slim'
212
+ end
213
+ @after_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; puts @current_recipe; b[1].call}
214
+
215
+ # >-----------------------------[ Run 'stage_three' Callbacks ]-------------------------------<
216
+
217
+ @current_recipe = nil
218
+ say_wizard "Stage Three (running recipe 'stage_three' callbacks)."
219
+ @stage_three_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; puts @current_recipe; b[1].call}
220
+
221
+ # >-----------------------------[ Run 'stage_four' Callbacks ]-------------------------------<
222
+
223
+ @current_recipe = nil
224
+ say_wizard "Stage Four (running recipe 'stage_four' callbacks)."
225
+ @stage_four_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; puts @current_recipe; b[1].call}
226
+
227
+ @current_recipe = nil
228
+ say_wizard("Your new application will contain diagnostics in its README file.")
229
+ say_wizard("When reporting an issue on GitHub, include the README diagnostics.")
230
+ say_wizard "Finished running the redmint_composer app template."
231
+ 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<
@@ -0,0 +1,3 @@
1
+ module RailsWizard
2
+ VERSION = "3.0.44"
3
+ end
metadata ADDED
@@ -0,0 +1,201 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redmint_composer
3
+ version: !ruby/object:Gem::Version
4
+ version: '2.3'
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Kehoe
8
+ - Adrián Escat
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-10-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: i18n
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '0.6'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0.6'
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '4.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '4.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: thor
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '0.18'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '0.18'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '10.1'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '10.1'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.14'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '2.14'
84
+ - !ruby/object:Gem::Dependency
85
+ name: mg
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.0'
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.8
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '0.0'
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.0.8
104
+ description: A gem with recipes to create Rails application templates you can use
105
+ to generate Rails starter apps. FORK of rails_app_composer gem
106
+ email:
107
+ - daniel@danielkehoe.com
108
+ executables:
109
+ - redmint_composer
110
+ extensions: []
111
+ extra_rdoc_files: []
112
+ files:
113
+ - README.textile
114
+ - bin/redmint_composer
115
+ - lib/rails_wizard.rb
116
+ - lib/rails_wizard/command.rb
117
+ - lib/rails_wizard/config.rb
118
+ - lib/rails_wizard/diagnostics.rb
119
+ - lib/rails_wizard/recipe.rb
120
+ - lib/rails_wizard/recipes.rb
121
+ - lib/rails_wizard/template.rb
122
+ - recipes/admin.rb
123
+ - recipes/analytics.rb
124
+ - recipes/core.rb
125
+ - recipes/deployment.rb
126
+ - recipes/devise.rb
127
+ - recipes/email.rb
128
+ - recipes/email_dev.rb
129
+ - recipes/example.rb
130
+ - recipes/extras.rb
131
+ - recipes/frontend.rb
132
+ - recipes/gems.rb
133
+ - recipes/git.rb
134
+ - recipes/init.rb
135
+ - recipes/learn_rails.rb
136
+ - recipes/locale.rb
137
+ - recipes/omniauth.rb
138
+ - recipes/pages.rb
139
+ - recipes/rails_bootstrap.rb
140
+ - recipes/rails_devise.rb
141
+ - recipes/rails_devise_pundit.rb
142
+ - recipes/rails_devise_roles.rb
143
+ - recipes/rails_foundation.rb
144
+ - recipes/rails_mailinglist_activejob.rb
145
+ - recipes/rails_omniauth.rb
146
+ - recipes/rails_signup_download.rb
147
+ - recipes/rails_stripe_checkout.rb
148
+ - recipes/rails_stripe_coupons.rb
149
+ - recipes/rails_stripe_membership_saas.rb
150
+ - recipes/railsapps.rb
151
+ - recipes/readme.rb
152
+ - recipes/roles.rb
153
+ - recipes/setup.rb
154
+ - recipes/tests.rb
155
+ - spec/rails_wizard/config_spec.rb
156
+ - spec/rails_wizard/recipe_spec.rb
157
+ - spec/rails_wizard/recipes/sanity_spec.rb
158
+ - spec/rails_wizard/recipes_spec.rb
159
+ - spec/rails_wizard/template_spec.rb
160
+ - spec/spec_helper.rb
161
+ - spec/support/rails_directory.rb
162
+ - spec/support/template_runner.rb
163
+ - spec/test_recipes/test_recipe_in_file.rb
164
+ - templates/helpers.erb
165
+ - templates/layout.erb
166
+ - templates/recipe.erb
167
+ - version.rb
168
+ homepage: https://github.com/adrianescat/redmint_composer
169
+ licenses:
170
+ - MIT
171
+ metadata: {}
172
+ post_install_message:
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project: redmint_composer
188
+ rubygems_version: 2.4.8
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: A version of the RailsWizard gem with custom recipes for Rails starter apps.
192
+ test_files:
193
+ - spec/test_recipes/test_recipe_in_file.rb
194
+ - spec/spec_helper.rb
195
+ - spec/support/rails_directory.rb
196
+ - spec/support/template_runner.rb
197
+ - spec/rails_wizard/recipes/sanity_spec.rb
198
+ - spec/rails_wizard/template_spec.rb
199
+ - spec/rails_wizard/config_spec.rb
200
+ - spec/rails_wizard/recipes_spec.rb
201
+ - spec/rails_wizard/recipe_spec.rb