refinerycms 1.0.11 → 2.0.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/bin/refinerycms +24 -469
- data/lib/refinery/all.rb +3 -0
- data/lib/refinerycms.rb +1 -9
- data/templates/refinery/edge.rb +28 -0
- data/templates/refinery/installer.rb +26 -0
- metadata +135 -181
- data/.gitignore +0 -95
- data/.rspec +0 -3
- data/Gemfile +0 -60
- data/Guardfile +0 -36
- data/Rakefile +0 -13
- data/app/views/sitemap/index.xml.builder +0 -25
- data/autotest/autotest.rb +0 -17
- data/autotest/discover.rb +0 -2
- data/changelog.md +0 -882
- data/config.ru +0 -4
- data/config/cucumber.yml +0 -11
- data/config/database.yml.mysql +0 -20
- data/config/database.yml.postgresql +0 -57
- data/config/database.yml.sqlite3 +0 -26
- data/config/environments/development.rb +0 -31
- data/config/environments/production.rb +0 -55
- data/config/environments/test.rb +0 -41
- data/features/support/paths.rb +0 -19
- data/lib/load_path_analyzer.rb +0 -26
- data/lib/refinery.rb +0 -1
- data/lib/refinerycms/all.rb +0 -3
- data/license.md +0 -21
- data/public/javascripts/translations.js +0 -2
- data/readme.md +0 -116
- data/refinerycms.gemspec +0 -85
- data/spec/rcov.opts +0 -2
- data/spec/spec_helper.rb +0 -96
- data/spec/support/refinery/controller_macros.rb +0 -27
data/bin/refinerycms
CHANGED
@@ -1,472 +1,27 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
require 'pathname'
|
22
|
-
require 'fileutils'
|
23
|
-
require 'optparse'
|
24
|
-
|
25
|
-
module Refinery
|
26
|
-
class AppGenerator
|
27
|
-
|
28
|
-
def initialize(input)
|
29
|
-
# Default options
|
30
|
-
@input = input
|
31
|
-
@options = {
|
32
|
-
:confirm => false,
|
33
|
-
:database => {
|
34
|
-
:adapter => 'sqlite3',
|
35
|
-
:host => 'localhost',
|
36
|
-
:ident => false,
|
37
|
-
:password => nil,
|
38
|
-
:username => 'root',
|
39
|
-
:skip => false
|
40
|
-
},
|
41
|
-
:force => false,
|
42
|
-
:gems => [],
|
43
|
-
:heroku => false,
|
44
|
-
:testing => false,
|
45
|
-
:rails => {
|
46
|
-
:version => nil
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
@optparse = OptionParser.new do |opts|
|
51
|
-
opts.banner = "Purpose: Installs Refinery CMS to the specified directory"
|
52
|
-
opts.banner << "\nUsage: #{opts.program_name} /path/to/project [options]"
|
53
|
-
|
54
|
-
opts.separator ""
|
55
|
-
opts.separator "Specific Options:"
|
56
|
-
|
57
|
-
# Bail out if --update is specified.
|
58
|
-
opts.on('--update') do |update|
|
59
|
-
puts "\nYou specified --update which is a command that has been removed."
|
60
|
-
puts "To update your application:"
|
61
|
-
puts "- Change the version of the 'refinerycms' gem in your Gemfile."
|
62
|
-
puts "- Run bundle install"
|
63
|
-
puts "- Run bundle exec rails generate refinerycms --update"
|
64
|
-
puts "\n"
|
65
|
-
exit(1)
|
66
|
-
end
|
67
|
-
|
68
|
-
# Rails supports more options, but Refinery is only tested on these three
|
69
|
-
databases = %w(mysql postgresql sqlite3)
|
70
|
-
opts.on("-d DATABASE", "--database DATABASE", databases, "Select the database (default sqlite3)", " #{databases.join('/')}") do |db|
|
71
|
-
@options[:database][:adapter] = db
|
72
|
-
end
|
73
|
-
|
74
|
-
opts.on("--ident", "Use ident database authentication (for mysql or postgresql)") do
|
75
|
-
@options[:database][:ident] = true
|
76
|
-
end
|
77
|
-
|
78
|
-
opts.on("-u USERNAME", '--database-username USERNAME', String, "Set the database username", ' (default root)') do |username|
|
79
|
-
@options[:database][:username] = username
|
80
|
-
end
|
81
|
-
|
82
|
-
opts.on("-p PASSWORD", '--database-password PASSWORD', String, "Set the database password", " (default '')") do |password|
|
83
|
-
@options[:database][:password] = password
|
84
|
-
end
|
85
|
-
|
86
|
-
opts.on('-h', '--database-host HOST', String, "Set the database hostname", " (default localhost)") do |host|
|
87
|
-
@options[:database][:host] = host
|
88
|
-
end
|
89
|
-
|
90
|
-
opts.on('--skip-db', "Skip any database creation or migration tasks") do
|
91
|
-
@options[:database][:skip] = true
|
92
|
-
end
|
93
|
-
|
94
|
-
opts.on("-g", "--gems gem1,gem2,gem3", Array, "Additional gems to install") do |gems|
|
95
|
-
@options[:gems] = gems.reject {|g| g.to_s =~ /^refinerycms/}.map {|g| "gem '#{g.to_s}'"}
|
96
|
-
end
|
97
|
-
|
98
|
-
opts.on("-f", "--force", "Force overwriting of directory") do
|
99
|
-
@options[:force] = true
|
100
|
-
end
|
101
|
-
|
102
|
-
opts.on("--heroku [APP_NAME]", "Set up and deploy to Heroku") do |app_name|
|
103
|
-
@options[:heroku] = app_name || ''
|
104
|
-
end
|
105
|
-
|
106
|
-
opts.on("-c", "--confirm", "Confirm any prompts that require input") do
|
107
|
-
@options[:confirm] = true
|
108
|
-
end
|
109
|
-
|
110
|
-
opts.on('-r', "--rails-version VERSION", String, "Override the version of rails used to generate your application.") do |version|
|
111
|
-
@options[:rails][:version] = version
|
112
|
-
end
|
113
|
-
|
114
|
-
opts.on('-t', '--testing', "Automatically set up the project with refinerycms-testing support.") do
|
115
|
-
@options[:testing] = true
|
116
|
-
end
|
117
|
-
|
118
|
-
opts.separator ""
|
119
|
-
opts.separator "Common options:"
|
120
|
-
|
121
|
-
opts.on_tail("-h", "--help", "Display this screen") do
|
122
|
-
puts opts
|
123
|
-
exit
|
124
|
-
end
|
125
|
-
|
126
|
-
opts.on_tail("-v", "--version", "Display the version") do
|
127
|
-
puts Refinery.version
|
128
|
-
exit
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def run!
|
134
|
-
# Grab input and ensure that the path doesn't exist already and other checks.
|
135
|
-
validate!
|
136
|
-
|
137
|
-
# Generate a Refinery CMS application
|
138
|
-
generate!
|
139
|
-
|
140
|
-
# Bundle the application which activates Refinery CMS
|
141
|
-
bundle!
|
142
|
-
|
143
|
-
# Run any database migrations
|
144
|
-
migrate! unless @options[:database][:skip]
|
145
|
-
|
146
|
-
# Deploy to a hosting provider
|
147
|
-
deploy!
|
148
|
-
|
149
|
-
# Output helpful messages to user
|
150
|
-
output!
|
151
|
-
end
|
152
|
-
|
153
|
-
def validate!
|
154
|
-
# Check for valid input
|
155
|
-
begin
|
156
|
-
@optparse.parse!(@input)
|
157
|
-
rescue OptionParser::ParseError => pe
|
158
|
-
puts pe
|
159
|
-
puts "\n"
|
160
|
-
puts @optparse
|
161
|
-
exit(1)
|
162
|
-
end
|
163
|
-
|
164
|
-
# Ensure only one path is specified
|
165
|
-
unless @input.size == 1
|
166
|
-
puts "Please specify a single path to install Refinery CMS"
|
167
|
-
puts "\n"
|
168
|
-
puts @optparse
|
169
|
-
exit(1)
|
170
|
-
end
|
171
|
-
|
172
|
-
# Get the name and path of the new application
|
173
|
-
@app_path = Pathname.new(File.expand_path(@input.first))
|
174
|
-
@app_name = @app_path.to_s.split(File::SEPARATOR).last
|
175
|
-
|
176
|
-
rails_version_in_path = run_command('rails --version', {:cd => false, :bundler => false, :puts => false}).to_s.gsub(/(Rails |\n)/, '')
|
177
|
-
@rails_version_to_use = @options[:rails][:version] || rails_version_in_path
|
178
|
-
if @rails_version_to_use !~ %r{\b#{RAILS_MINOR_VERSION}}
|
179
|
-
puts "\nRails #{@rails_version_to_use} is not supported by Refinery #{::Refinery.version}, " \
|
180
|
-
"please use Rails #{RAILS_MINOR_VERSION}.x instead."
|
181
|
-
puts "\nYou can tell Refinery CMS an installed and compatible rails version to use like so:\n"
|
182
|
-
puts "\nrefinerycms #{@app_name} --rails-version #{RAILS_MINOR_VERSION}"
|
183
|
-
puts "\n"
|
184
|
-
exit(1)
|
185
|
-
end
|
186
|
-
|
187
|
-
# Get the refinery path based on this file
|
188
|
-
@refinery_path = Pathname.new(File.expand_path('../../', __FILE__))
|
189
|
-
|
190
|
-
if @app_path == @refinery_path
|
191
|
-
puts "\nPlease generate your new project from outside the Refinery directory and any Rails directory."
|
192
|
-
puts "\n"
|
193
|
-
exit(1)
|
194
|
-
elsif %w(refinery refinerycms test testing rails).include?(@input.first.downcase)
|
195
|
-
puts "\nYou can't use '#{@input.first}' as a name for your project, this is a reserved word that will cause conflicts."
|
196
|
-
puts "Please choose another name for your new project."
|
197
|
-
puts "\n"
|
198
|
-
exit(1)
|
199
|
-
elsif @app_path.directory? && !@options[:force]
|
200
|
-
puts "\nThe directory '#{@app_path}' that you specified already exists."
|
201
|
-
puts "Use --force to overwrite an existing directory."
|
202
|
-
puts "\n"
|
203
|
-
exit(1)
|
204
|
-
elsif @options[:heroku]
|
205
|
-
if @options[:heroku].to_s.include?('_') or @options[:heroku].to_s.length > 30
|
206
|
-
message = ["\nThe application name '#{@options[:heroku]}' that you specified is invalid for Heroku."]
|
207
|
-
suggested_name = @options[:heroku].to_s
|
208
|
-
if suggested_name.include?('_')
|
209
|
-
message << "This is because it contains underscores which Heroku does not allow."
|
210
|
-
suggested_name.gsub!(/_/, '-')
|
211
|
-
end
|
212
|
-
if suggested_name.length > 30
|
213
|
-
message << "This is#{" also" unless suggested_name.nil?} because it is longer than 30 characters."
|
214
|
-
suggested_name = suggested_name[0..29]
|
215
|
-
end
|
216
|
-
|
217
|
-
if @options[:force] or @options[:confirm]
|
218
|
-
@options[:heroku] = suggested_name
|
219
|
-
else
|
220
|
-
message << "Please choose another name like '#{suggested_name}'"
|
221
|
-
message << "Or use --confirm to automatically use '#{suggested_name}'"
|
222
|
-
message << "\n"
|
223
|
-
puts message.join("\n")
|
224
|
-
exit(1)
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
def generate!
|
231
|
-
# Generate a rails application
|
232
|
-
rails_command = "rails _#{@rails_version_to_use}_ new \"#{@app_path}\""
|
233
|
-
rails_command << " --database #{@options[:database][:adapter]}"
|
234
|
-
rails_command << " --force" if @options[:force]
|
235
|
-
rails_command << " --skip-test-unit --skip-prototype"
|
236
|
-
rails_command << " --skip-bundle" # Rails automatically installs the bundle, but so do we!
|
237
|
-
rails_command << " -m http://jruby.org" if defined? JRUBY_VERSION
|
238
|
-
|
239
|
-
rails_output = run_command(rails_command, {:cd => false, :bundler => false})
|
240
|
-
|
241
|
-
# Detect non-success or a blank rails output or starting with "Can't initialize" or "Error"
|
242
|
-
if !$?.success? or rails_output.to_s.length == 0 or rails_output =~ /^(Can't\ initialize|Error)/
|
243
|
-
puts "\nGenerating Rails application failed. Exiting..."
|
244
|
-
if run_command('gem list rails', {:cd => false, :puts => false, :ruby => false}) !~ %r{[( ]#{@rails_version_to_use}(.0)*[,\)]}
|
245
|
-
puts "\nDo you have Rails #{@rails_version_to_use} installed?"
|
246
|
-
end
|
247
|
-
puts "\n"
|
248
|
-
exit(1)
|
249
|
-
else
|
250
|
-
if defined? JRUBY_VERSION
|
251
|
-
find_and_replace(@app_path.join('Gemfile'), /['|"]sqlite3['|"]/, "'activerecord-jdbcsqlite3-adapter'")
|
252
|
-
end
|
253
|
-
|
254
|
-
# Remove rails from the Gemfile so that Refinery can manage it
|
255
|
-
find_and_replace('Gemfile', %r{^gem 'rails'}, "# gem 'rails'")
|
256
|
-
|
257
|
-
# Override database host
|
258
|
-
if @options[:database][:host] != 'localhost' && (adapter = @options[:database][:adapter]) != 'sqlite3'
|
259
|
-
adapter = 'mysql2' if adapter == 'mysql'
|
260
|
-
find_and_replace('config/database.yml', "\n adapter: #{adapter}", "\n adapter: #{adapter}\n host: #{@options[:database][:host]}")
|
261
|
-
end
|
262
|
-
|
263
|
-
# Override database username and password
|
264
|
-
if @options[:database][:ident]
|
265
|
-
find_and_replace('config/database.yml', %r{username:}, '#username:')
|
266
|
-
find_and_replace('config/database.yml', %r{password:}, '#password:')
|
267
|
-
else
|
268
|
-
find_and_replace('config/database.yml', %r{username:.*}, "username: #{@options[:database][:username]}")
|
269
|
-
find_and_replace('config/database.yml', %r{password:.*}, "password: \"#{@options[:database][:password]}\"")
|
270
|
-
end
|
271
|
-
|
272
|
-
puts "\n---------"
|
273
|
-
puts "Refinery successfully installed in '#{@app_path}'!\n\n"
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
def bundle!
|
278
|
-
# Insert the current REFINERY CMS section (you shouldn't put anything in here).
|
279
|
-
refinery_gemfile_contents = Refinery.root.join('Gemfile').read
|
280
|
-
refinery_gems = refinery_gemfile_contents.match(/# REFINERY CMS =+.*# END REFINERY CMS =+/m)[0]
|
281
|
-
refinery_gems.gsub!("# gem 'refinerycms'", "gem 'refinerycms'") # Enable refinerycms
|
282
|
-
if @options[:testing] # Enable testing
|
283
|
-
refinery_gems.gsub!("\n=begin #testing", '')
|
284
|
-
refinery_gems.gsub!("\n=end #testing", '')
|
285
|
-
end
|
286
|
-
|
287
|
-
app_gemfile = @app_path.join('Gemfile')
|
288
|
-
refinery_user_defined_gems = refinery_gemfile_contents.match(/# USER DEFINED(.*)# END USER DEFINED/m)
|
289
|
-
refinery_user_defined_gems = refinery_user_defined_gems[1] unless refinery_user_defined_gems.nil?
|
290
|
-
|
291
|
-
app_gemfile.open('a') do |f|
|
292
|
-
f.write "\n#{refinery_gems}\n"
|
293
|
-
@options[:gems] = ([refinery_user_defined_gems] | [@options[:gems]]).flatten.compact
|
294
|
-
|
295
|
-
f.write "\n# USER DEFINED\n#{@options[:gems].join("\n")}\n# END USER DEFINED" if @options[:gems].any?
|
296
|
-
end
|
297
|
-
|
298
|
-
# Specify the correct version of the Refinery CMS gem (may be git source).
|
299
|
-
src = Refinery.version !~ /\.pre$/ ? "'~> #{Refinery.version}'" : ":git => 'git://github.com/resolve/refinerycms'"
|
300
|
-
find_and_replace('Gemfile', %r{gem 'refinerycms',.*}, "gem 'refinerycms', #{src}")
|
301
|
-
|
302
|
-
# Add in fog gem for Heroku
|
303
|
-
find_and_replace('Gemfile', "# gem 'fog'", "gem 'fog'") if @options[:heroku]
|
304
|
-
|
305
|
-
# Automate
|
306
|
-
puts "Installing gem requirements using bundler..\n"
|
307
|
-
|
308
|
-
# Install!
|
309
|
-
run_command("bundle install", {:fail => "Unable to install necessary gems"})
|
310
|
-
end
|
311
|
-
|
312
|
-
def migrate!
|
313
|
-
unless @options[:database][:adapter] == 'sqlite3'
|
314
|
-
# Ensure the database exists so that queries like .table_exists? don't fail.
|
315
|
-
puts "\nCreating a new database.."
|
316
|
-
|
317
|
-
# Warn about incorrect username or password.
|
318
|
-
if @options[:database][:ident]
|
319
|
-
note = "NOTE: If ident authentication fails then the installer will stall or fail here.\n\n"
|
320
|
-
else
|
321
|
-
note = "NOTE: if your database username is not '#{@options[:database][:username]}'"
|
322
|
-
note << " or your password is not '#{@options[:database][:password]}' then the installer will stall here.\n\n"
|
323
|
-
end
|
324
|
-
puts note
|
325
|
-
|
326
|
-
run_command("rake -f \"#{@app_path.join('Rakefile')}\" db:create", {
|
327
|
-
:fail => "Unable to create the application's database",
|
328
|
-
:bundler => true
|
329
|
-
})
|
330
|
-
end
|
331
|
-
|
332
|
-
generators!
|
333
|
-
|
334
|
-
puts "\n\nSetting up your development database..\n"
|
335
|
-
run_command("rake -f \"#{@app_path.join('Rakefile')}\" db:migrate", :bundler => true)
|
336
|
-
end
|
337
|
-
|
338
|
-
def generators!
|
339
|
-
# Run the newly activated Refinery CMS generator.
|
340
|
-
puts "\n\nPreparing your application using the refinerycms generator..\n"
|
341
|
-
run_command("rails generate refinerycms", {
|
342
|
-
:cd => true,
|
343
|
-
:fail => "Could not run the refinerycms generator successfully.",
|
344
|
-
:bundler => true
|
345
|
-
})
|
346
|
-
|
347
|
-
if @options[:testing]
|
348
|
-
puts "\n\nAdding testing support files using the refinerycms_testing generator..\n"
|
349
|
-
run_command("rails generate refinerycms_testing", {
|
350
|
-
:cd => true,
|
351
|
-
:fail => "Could not run the refinerycms_testing generator successfully.",
|
352
|
-
:bundler => true
|
353
|
-
})
|
354
|
-
end
|
355
|
-
end
|
356
|
-
|
357
|
-
def deploy!
|
358
|
-
# Deploy to Heroku
|
359
|
-
hosting = nil
|
360
|
-
hosting = "Heroku" if @options[:heroku]
|
361
|
-
unless hosting.nil?
|
362
|
-
puts "\n\nInitializing and committing to git..\n"
|
363
|
-
run_command("git init && git add . && git commit -am 'Initial Commit'", :ruby => false)
|
364
|
-
|
365
|
-
puts "\n\nCreating #{hosting} app..\n"
|
366
|
-
run_command("#{hosting.downcase} create #{@options[:heroku]}")
|
367
|
-
|
368
|
-
puts "\n\nPushing to #{hosting} (this takes time, be patient)..\n"
|
369
|
-
run_command("git push #{hosting.downcase} master", :ruby => false)
|
370
|
-
|
371
|
-
puts "\n\nSetting up the #{hosting} database..\n"
|
372
|
-
run_command("#{hosting.downcase} rake db:migrate")
|
373
|
-
|
374
|
-
if @options[:heroku]
|
375
|
-
puts "\n\nRestarting servers...\n"
|
376
|
-
run_command("#{hosting.downcase} restart")
|
377
|
-
end
|
378
|
-
end
|
379
|
-
# End automation
|
380
|
-
end
|
381
|
-
|
382
|
-
def output!
|
383
|
-
# Construct helpful output messages
|
384
|
-
note = ["\n=== ACTION REQUIRED ==="]
|
385
|
-
if @options[:database][:skip]
|
386
|
-
note << "Because you elected to skip database creation and migration in the installer"
|
387
|
-
note << "you will need to run the following tasks manually to maintain correct operation:"
|
388
|
-
note << "\ncd #{@app_path}"
|
389
|
-
note << "bundle exec rake db:create"
|
390
|
-
note << "bundle exec rails generate refinerycms"
|
391
|
-
note << "bundle exec rake db:migrate"
|
392
|
-
note << "\n---------\n"
|
393
|
-
end
|
394
|
-
note << "Now you can launch your webserver using:"
|
395
|
-
note << "\ncd #{@app_path}"
|
396
|
-
note << "rails server"
|
397
|
-
note << "\nThis will launch the built-in webserver at port 3000."
|
398
|
-
note << "You can now see your site running in your browser at http://localhost:3000"
|
399
|
-
|
400
|
-
if @options[:heroku]
|
401
|
-
note << "\nIf you want files and images to work on heroku, you will need setup S3:"
|
402
|
-
note << "heroku config:add S3_BUCKET=XXXXXXXXX S3_KEY=XXXXXXXXX S3_SECRET=XXXXXXXXXX S3_REGION=XXXXXXXXXX"
|
403
|
-
end
|
404
|
-
|
405
|
-
note << "\nThanks for installing Refinery, enjoy creating your new application!"
|
406
|
-
note << "---------\n\n"
|
407
|
-
|
408
|
-
# finally, output.
|
409
|
-
puts note.join("\n")
|
410
|
-
end
|
411
|
-
|
412
|
-
private :bundle!, :deploy!, :generate!, :generators!, :migrate!, :output!, :validate!
|
413
|
-
|
414
|
-
def run_command(command, options = {})
|
415
|
-
require 'rbconfig'
|
416
|
-
options = {:cd => true, :puts => true, :fail => nil, :ruby => true, :bundler => false}.merge(options)
|
417
|
-
to_run = %w()
|
418
|
-
to_run << "cd \"#{@app_path}\" &&" if options[:cd]
|
419
|
-
|
420
|
-
# Sometimes we want to exclude the ruby runtime executable from the front
|
421
|
-
# e.g. when shelling to git
|
422
|
-
if options[:ruby]
|
423
|
-
exe = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['RUBY_INSTALL_NAME'])
|
424
|
-
to_run << "\"#{exe}\" -S "
|
425
|
-
end
|
426
|
-
|
427
|
-
to_run << "bundle exec" if options[:bundler]
|
428
|
-
|
429
|
-
to_run << command
|
430
|
-
|
431
|
-
if Refinery::WINDOWS
|
432
|
-
to_run = ['"'] + to_run + ['"']
|
433
|
-
to_run = %w(cmd /c) + to_run.map{|c| c.gsub(/\//m, '\\')}
|
434
|
-
end
|
435
|
-
|
436
|
-
to_run = to_run.join(' ')
|
437
|
-
|
438
|
-
output = []
|
439
|
-
if options[:puts]
|
440
|
-
puts "Running: #{to_run}"
|
441
|
-
IO.popen(to_run) do |t|
|
442
|
-
while (line = t.gets)
|
443
|
-
output << line
|
444
|
-
puts line
|
445
|
-
end
|
446
|
-
end
|
447
|
-
else
|
448
|
-
output << `#{to_run}`
|
449
|
-
end
|
450
|
-
|
451
|
-
if $?.success? or options[:fail].nil?
|
452
|
-
output.join("\n")
|
453
|
-
else
|
454
|
-
puts "\nFailed to generate application."
|
455
|
-
puts "Message: #{options[:fail]}" unless options[:fail].nil?
|
456
|
-
puts "Exiting...\n\n"
|
457
|
-
exit(1)
|
458
|
-
end
|
459
|
-
end
|
460
|
-
|
461
|
-
def find_and_replace(file, find, replace)
|
462
|
-
(contents = @app_path.join(file).read).gsub!(find, replace)
|
463
|
-
(@app_path + file).open("w") do |f|
|
464
|
-
f.puts contents
|
465
|
-
end
|
466
|
-
end
|
467
|
-
|
468
|
-
protected :run_command, :find_and_replace
|
2
|
+
gem 'railties'
|
3
|
+
require 'rails/generators'
|
4
|
+
require 'rails/generators/rails/app/app_generator'
|
5
|
+
template_path = File.expand_path('../../templates/refinery/installer.rb', __FILE__)
|
6
|
+
|
7
|
+
application_name = ARGV.shift
|
8
|
+
result = Rails::Generators::AppGenerator.start [application_name, '-m', template_path, '--skip-test-unit'] | ARGV
|
9
|
+
|
10
|
+
if result && result.include?('Gemfile')
|
11
|
+
note = ["\n=== ACTION REQUIRED ==="]
|
12
|
+
note << "Now you can launch your webserver using:"
|
13
|
+
note << "\ncd #{application_name}"
|
14
|
+
note << "rails server"
|
15
|
+
note << "\nThis will launch the built-in webserver at port 3000."
|
16
|
+
note << "You can now see your site running in your browser at http://localhost:3000"
|
17
|
+
|
18
|
+
if ARGV.include?('--heroku')
|
19
|
+
note << "\nIf you want files and images to work on Heroku, you will need setup S3:"
|
20
|
+
note << "heroku config:add S3_BUCKET=XXXXXXXXX S3_KEY=XXXXXXXXX S3_SECRET=XXXXXXXXXX S3_REGION=XXXXXXXXXX"
|
469
21
|
end
|
470
|
-
end
|
471
22
|
|
472
|
-
Refinery
|
23
|
+
note << "\nThanks for installing Refinery CMS, we hope you enjoy crafting your application!"
|
24
|
+
note << "---------\n\n"
|
25
|
+
|
26
|
+
puts note
|
27
|
+
end
|