Class: Trireme::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- Trireme::AppBuilder
show all
- Includes:
- Actions
- Defined in:
- lib/trireme/app_builder.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Actions
#configure_environment, #replace_in_file
Instance Attribute Details
#domain_base ⇒ Object
Returns the value of attribute domain_base.
3
4
5
|
# File 'lib/trireme/app_builder.rb', line 3
def domain_base
@domain_base
end
|
#server_ip ⇒ Object
Returns the value of attribute server_ip.
3
4
5
|
# File 'lib/trireme/app_builder.rb', line 3
def server_ip
@server_ip
end
|
Instance Method Details
#add_additional_gems ⇒ Object
7
8
9
10
11
12
|
# File 'lib/trireme/app_builder.rb', line 7
def add_additional_gems
if yes? "Add carrierwave for file uploading?"
@generator.gem 'carrierwave'
@generator.gem 'mini_magick'
end
end
|
#add_bootstrap_and_overrides ⇒ Object
14
15
16
|
# File 'lib/trireme/app_builder.rb', line 14
def add_bootstrap_and_overrides
copy_file "app/assets/stylesheets/_bootstrap_and_overrides.scss"
end
|
#add_custom_gems ⇒ Object
18
19
20
21
22
|
# File 'lib/trireme/app_builder.rb', line 18
def add_custom_gems
gems_path = find_in_source_paths 'additional_gems'
new_gems = File.open(gems_path).read
append_file 'Gemfile', "\n#{new_gems}"
end
|
#add_to_gitignore ⇒ Object
24
25
26
27
28
|
# File 'lib/trireme/app_builder.rb', line 24
def add_to_gitignore
gitignore_file = find_in_source_paths('gitignore_additions')
gitignore = File.open(gitignore_file).read
append_file '.gitignore', gitignore
end
|
#config_settings ⇒ Object
198
199
200
|
# File 'lib/trireme/app_builder.rb', line 198
def config_settings
@config ||= Trireme::config
end
|
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/trireme/app_builder.rb', line 30
def configure_generators
generators_config = <<-RUBY.gsub(/^ {2}/, '')
config.generators do |generate|
generate.helper false
generate.assets false
generate.view_specs false
generate.stylesheets false
generate.javascripts false
end\n
RUBY
inject_into_class 'config/application.rb', 'Application', generators_config
end
|
43
44
45
46
|
# File 'lib/trireme/app_builder.rb', line 43
def configure_rspec
generate 'rspec:install'
run 'rm test/ -Rf'
end
|
#copy_application_layout ⇒ Object
52
53
54
|
# File 'lib/trireme/app_builder.rb', line 52
def copy_application_layout
copy_file "app/views/layouts/application.html.erb", force: true
end
|
#copy_bootstrap_scaffold_templates ⇒ Object
56
57
58
|
# File 'lib/trireme/app_builder.rb', line 56
def copy_bootstrap_scaffold_templates
directory 'lib/templates/erb/scaffold'
end
|
#copy_utility_helper ⇒ Object
48
49
50
|
# File 'lib/trireme/app_builder.rb', line 48
def copy_utility_helper
copy_file "app/helpers/utility_helper.rb", force: true
end
|
#create_admin_actions_partial ⇒ Object
64
65
66
|
# File 'lib/trireme/app_builder.rb', line 64
def create_admin_actions_partial
copy_file "app/views/shared/_admin_actions.html.erb"
end
|
#create_flashes_partial ⇒ Object
60
61
62
|
# File 'lib/trireme/app_builder.rb', line 60
def create_flashes_partial
copy_file "app/views/shared/_flashes.html.erb"
end
|
68
69
70
|
# File 'lib/trireme/app_builder.rb', line 68
def create_form_errors_partial
copy_file "app/views/shared/_form_errors.html.erb"
end
|
#create_shared_views_directory ⇒ Object
72
73
74
|
# File 'lib/trireme/app_builder.rb', line 72
def create_shared_views_directory
empty_directory 'app/views/shared'
end
|
202
203
204
205
|
# File 'lib/trireme/app_builder.rb', line 202
def format_config(yml, num_tabs = 1)
tabs = "\t" * (num_tabs + 1)
yml.to_s.gsub(/\A{/, "{\n#{tabs}").gsub(/, :/, ",\n#{tabs}:").gsub(/}\Z/, "\n#{"\t" * num_tabs}}").gsub("=>", " => ")
end
|
#generate_home_controller ⇒ Object
76
77
78
79
|
# File 'lib/trireme/app_builder.rb', line 76
def generate_home_controller
generate :controller, "home index"
route "root to: 'home\#index'"
end
|
#get_server_options ⇒ Object
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/trireme/app_builder.rb', line 81
def get_server_options
@domain_base ||= ask("Domain:")
if !@domain_base.blank? && config_settings.has_key?(:chef) && yes?("Get IP from Chef (#{config_settings[:chef][:url]})?")
require 'open-uri'
begin
@server_ip = open("#{config_settings[:chef][:url]}#{@domain_base}").base_uri.to_s.match(/http:\/\/([\d\.]+)/)[1]
puts "Setting server ip to #{@server_ip}"
rescue
puts "Failed to get ip"
end
end
@domain_base = "example.com" if @domain_base.blank?
@server_ip ||= ask("Server IP (if you have one):")
end
|
#initialize_git ⇒ Object
96
97
98
99
100
|
# File 'lib/trireme/app_builder.rb', line 96
def initialize_git
git :init
git add: "."
git commit: "-m 'Inital commit'"
end
|
#readme ⇒ Object
Overrides generation of rails readme file
103
104
105
|
# File 'lib/trireme/app_builder.rb', line 103
def readme
template "README.md.erb", "README.md"
end
|
107
108
109
|
# File 'lib/trireme/app_builder.rb', line 107
def
replace_in_file 'config/routes.rb', /Application\.routes\.draw do.*end/m, "Application.routes.draw do\nend"
end
|
#remove_sqlite_gem ⇒ Object
111
112
113
|
# File 'lib/trireme/app_builder.rb', line 111
def remove_sqlite_gem
gsub_file 'Gemfile', /^\s*gem .sqlite3.+$/, ''
end
|
#replace_application_css ⇒ Object
115
116
117
118
|
# File 'lib/trireme/app_builder.rb', line 115
def replace_application_css
remove_file 'app/assets/stylesheets/application.css'
copy_file 'app/assets/stylesheets/application.css.scss'
end
|
#set_sublime_text_as_editor ⇒ Object
120
121
122
|
# File 'lib/trireme/app_builder.rb', line 120
def set_sublime_text_as_editor
copy_file "config/initializers/better_errors.rb"
end
|
#setup_capistrano ⇒ Object
129
130
131
132
133
134
135
136
137
138
139
140
141
|
# File 'lib/trireme/app_builder.rb', line 129
def setup_capistrano
if @domain_base && @server_ip
opts = { domain_base: @domain_base, server_ip: @server_ip, force: true }
else
opts[:domain_base] = ask("Domain:")
opts[:server_ip] = ask("Server IP:")
opts[:force] = true
end
template "config/deploy.rb.erb", "config/deploy.rb", opts
directory "config/deploy"
copy_file "Capfile", "Capfile"
directory "config/recipes"
end
|
#setup_console ⇒ Object
143
144
145
|
# File 'lib/trireme/app_builder.rb', line 143
def setup_console
copy_file "config/initializers/jazz_hands.rb"
end
|
#setup_devise ⇒ Object
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# File 'lib/trireme/app_builder.rb', line 147
def setup_devise
if config_settings[:devise][:include] || yes?("Add Devise?")
devise_model = ask("Devise model (default: #{config_settings[:devise][:model]}):").underscore
devise_model = config_settings[:devise][:model] if devise_model.blank?
@generator.gem 'devise'
run 'bundle install'
generate 'devise:install'
generate "devise #{devise_model}"
generate "devise:views"
bundle_command 'exec rake db:migrate'
if config_settings[:devise][:seed] || yes?("Seed database with #{devise_model}@example.com?")
append_file 'db/seeds.rb', "devise_user = #{devise_model.titleize}.create email: '#{devise_model}@example.com', password: 'password'"
bundle_command 'exec rake db:seed'
end
end
end
|
#setup_exception_notification ⇒ Object
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/trireme/app_builder.rb', line 164
def setup_exception_notification
en_config = "config.middleware.insert_before Warden::Manager, ExceptionNotification::Rack,\n"
if config_settings[:exception_notification][:email]
config_settings[:exception_notification][:email][:email_prefix] = "[#{app_name.titleize} Exception]"
en_config << "\t\t:email => #{format_config(config_settings[:exception_notification][:email], 2)}"
end
if config_settings[:exception_notification][:irc]
config_settings[:exception_notification][:irc][:prefix] = "[#{app_name.titleize} Production]"
en_config << ",\n\t\t" if en_config[/}\Z/]
en_config << ":irc => #{format_config(config_settings[:exception_notification][:irc], 2)}"
end
configure_environment "production", en_config
end
|
#setup_guard ⇒ Object
178
179
180
|
# File 'lib/trireme/app_builder.rb', line 178
def setup_guard
copy_file "Guardfile"
end
|
#setup_mailcatcher ⇒ Object
182
183
184
185
|
# File 'lib/trireme/app_builder.rb', line 182
def setup_mailcatcher
configure_environment "development",
"config.action_mailer.delivery_method = :smtp\n config.action_mailer.smtp_settings = { :address => \"localhost\", :port => 1025 }"
end
|
#setup_quiet_assets ⇒ Object
187
188
189
190
|
# File 'lib/trireme/app_builder.rb', line 187
def setup_quiet_assets
configure_environment "development",
"config.quiet_assets = true"
end
|
#setup_smtp ⇒ Object
124
125
126
127
|
# File 'lib/trireme/app_builder.rb', line 124
def setup_smtp
configure_environment "production",
"config.action_mailer_delivery_method = :smtp\n\tconfig.action_mailer.smtp_settings = #{format_config(config_settings[:action_mailer][:smtp_settings])}"
end
|
#setup_staging_environment ⇒ Object
192
193
194
|
# File 'lib/trireme/app_builder.rb', line 192
def setup_staging_environment
run 'cp config/environments/production.rb config/environments/staging.rb'
end
|