Class: Weapon

Inherits:
Thor
  • Object
show all
Includes:
Rails::Generators::Actions, Thor::Actions
Defined in:
lib/weapon.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



10
11
12
# File 'lib/weapon.rb', line 10

def self.source_root
  File.dirname(__FILE__)
end

Instance Method Details

#custom_i18nObject



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/weapon.rb', line 98

def custom_i18n
  makesure_in_git
  puts "custom i18n"
  File.open("Gemfile", "a").write("\ngem 'slim-rails'\ngem 'simple_form', '~> 3.1.0'")
  run "bundle"

  unless File.exist?('config/locales/zh-CN.yml')
    copy_file 'support/custom_i18n/zh-CN.yml', 'config/locales/zh-CN.yml'
  end

  config_bootstrap
  run "rails g simple_form:install --bootstrap"
  copy_file 'support/custom_i18n/_form.html.slim', 'lib/templates/slim/scaffold/_form.html.slim'
  copy_file 'support/custom_i18n/index.html.slim', 'lib/templates/slim/scaffold/index.html.slim'
  copy_file 'support/custom_i18n/new.html.slim', 'lib/templates/slim/scaffold/new.html.slim'
  copy_file 'support/custom_i18n/edit.html.slim', 'lib/templates/slim/scaffold/edit.html.slim'
  copy_file 'support/custom_i18n/show.html.slim', 'lib/templates/slim/scaffold/show.html.slim'

  copy_file 'support/custom_i18n/controller.rb', 'lib/templates/rails/i18n_scaffold_controller/controller.rb'
  copy_file 'support/custom_i18n/i18n_scaffold_controller_generator.rb', 'lib/generators/rails/i18n_scaffold_controller/i18n_scaffold_controller_generator.rb'

  inject_into_file 'config/application.rb', after: "# -- all .rb files in that directory are automatically loaded.\n" do "  config.generators.template_engine = :slim\n  config.generators.scaffold_controller = \"i18n_scaffold_controller\"\n  config.i18n.default_locale = \"zh-CN\"\n  RUBY\n  end\n  run \"rails g simple_form:install --bootstrap\"\nend\n"

#for_seaifyObject



138
139
140
141
142
143
# File 'lib/weapon.rb', line 138

def for_seaify
  makesure_in_git
  invoke :install_must_gems
  invoke :custom_i18n
  invoke :setup_settings_ui
end

#install_must_gemsObject



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/weapon.rb', line 148

def install_must_gems
  makesure_in_git

  gem 'enumerize'
  gem 'slim-rails'
  gem 'sass-rails', '~> 5.0'
  gem 'bootstrap-sass'
  gem 'font-awesome-sass'
  gem 'simple_form', '~> 3.1.0'
  gem 'annotate', '~> 2.6.6'
  gem 'i18n-tasks', '~> 0.8.3'
  gem 'monadic'
  gem 'gon'
  gem 'exception_notification'
  gem 'awesome_print'
  gem 'slack-notifier'
  gem 'activevalidators'

  gem 'mina', require: false
  gem 'mina-multistage', require: false
  gem 'mina-sidekiq', require: false

  gem 'figaro'
  gem 'whenever', '~> 0.9.2'
  gem "rails-erd"

  gem_group :development, :test do
    gem 'web-console', '~> 2.0'
    gem 'rspec-rails'
    gem 'factory_girl_rails'
    gem 'faker', '~> 1.4.3'
    gem 'spring'
  end

  gem_group :development do
    gem 'guard-bundler'
    gem 'guard-rails'
    gem 'guard-rspec'
    gem 'guard-livereload'
    gem 'rack-livereload'
    gem 'guard-migrate'
    gem 'guard-annotate'
    gem 'guard-shell'
    gem 'quiet_assets'
    gem 'rails_layout'
    gem 'spring-commands-rspec'
    gem 'better_errors'
    gem 'meta_request'
    gem 'binding_of_caller'
    gem 'hirb'
    gem 'brakeman'
    gem 'rails_panel'
    gem 'pry'
    gem 'pry-byebug'
    gem 'pry-nav'
    #gem 'pry-rails', :group => :development
  end

  gem_group :test do
    gem 'database_cleaner'
    gem 'launchy'
    gem 'selenium-webdriver'
    gem 'faker'
    gem 'simplecov'
    gem 'timecop'
  end

  application(nil, env: "development") do
    "config.middleware.insert_before(Rack::Lock, Rack::LiveReload)"
  end

  application do
    "config.generators.template_engine = :slim"
  end

  run "bundle"
  run "guard init"

  run "you might need to remove gem byebug, it might conflict with pry-byebug"


end

#push_to_githubObject



129
130
131
132
133
134
135
# File 'lib/weapon.rb', line 129

def push_to_github
  makesure_in_git
  puts "pull to github"
  run 'gem install hub'
  run "hub create #{File.basename(Dir.getwd)}"
  run "hub push -u origin master"
end

#setup_mina_unicornObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/weapon.rb', line 38

def setup_mina_unicorn
  makesure_in_git

  gem 'mina-unicorn', require: false
  gem 'unicorn'
  run "bundle"
  app_name = ask("input your app name, used to config unix sock file name: ")

  copy_file 'support/mina_unicorn/unicorn.rb', 'config/unicorn.rb'
  gsub_file "config/unicorn.rb", "app_name_for_replace", app_name

  copy_file 'support/mina_unicorn/unicorn-nginx.conf', 'unicorn-nginx.conf'
  gsub_file "config/unicorn.rb", "app_name_for_replace", app_name

  domain_name = ask("input your domain name, used as nginx conf file's server_name, like www.example.com: ")
  gsub_file "unicorn-nginx.conf", "app_name_for_replace", app_name
  gsub_file "unicorn-nginx.conf", "domain_name_for_replace", domain_name

  puts "setup mina deploy"
  copy_file 'support/mina_unicorn/deploy.rb', 'config/deploy.rb'

  gsub_file "config/deploy.rb", "app_name_for_replaceA", app_name

  username = ask("input your user name on deploy host:")
  gsub_file "config/deploy.rb", "user_name_fore_replace", username

  domain = ask("input your deploy host, like example.com or 123.100.100.100:")
  gsub_file "config/deploy.rb", "domain_name_for_replace", domain

  directory = ask("input your deploy directory:")
  directory = directory.gsub(/\/$/, "")
  gsub_file "config/deploy.rb", "deploy_path_for_replace", directory

  default_repo = `git remote -v`.split(' ')[1]
  repository = ask("input your git remote url to pull from, default #{default_repo} ")
  gsub_file "config/deploy.rb", "repo_path_for_replace", (repository != "")?repository: default_repo

  setup_dir_command = 'ssh ' + username + '@' + domain + " -t 'mkdir -p " + directory  + ';chown -R ' + username + ' ' + directory + "'"
  run setup_dir_command

  run 'mina setup'
  run 'scp config/database.yml ' + username + '@' + domain + ':' + directory + '/shared/config/'
  run 'scp unicorn-nginx.conf ' + username + '@' + domain + ':' + '/etc/nginx/sites-enabled/#{app_name}.conf'
  run 'mina deploy'
end

#setup_settings_uiObject



85
86
87
88
89
90
91
92
93
94
95
# File 'lib/weapon.rb', line 85

def setup_settings_ui
  makesure_in_git
  #inject_into_file "Gemfile", "gem 'rails-settings-ui', '~> 0.3.0'\n gem 'rails-settings-cached', '0.4.1'\n", :before => /^end/
  File.open("Gemfile", "a").write("\ngem 'rails-settings-ui', '~> 0.3.0'\n gem 'rails-settings-cached', '0.4.1'\n")
  run "bundle"
  run "rails g settings setting"
  run "rails g rails_settings_ui:install"
  run "rake db:migrate"
  copy_file 'support/rails_settings_ui/rails_settings_ui.rb', 'config/initializers/rails_settings_ui.rb'
  copy_file 'support/rails_settings_ui/setting.rb', 'app/models/setting.rb'
end