Class: Weapon

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



7
8
9
# File 'lib/weapon.rb', line 7

def self.source_root
  File.dirname(__FILE__)
end

Instance Method Details

#config_bootstrapObject



91
92
93
94
95
96
97
98
# File 'lib/weapon.rb', line 91

def config_bootstrap
  File.open("Gemfile", "a").write("\ngem 'bootstrap-sass'")
  run "bundle"
  #config bootstrap stylesheets
  File.open('app/assets/javascripts/application.js', 'a') { |f| f.write("\n//= require bootstrap-sprockets")}
  File.open('app/assets/stylesheets/application.scss', 'a') { |f| f.write("\n@import 'bootstrap-sprockets';\n@import 'bootstrap';") }
  run "rm app/assets/stylesheets/application.css"
end

#custom_i18nObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/weapon.rb', line 60

def custom_i18n
  invoke :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

  invoke :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"

#makesure_in_gitObject



12
13
14
15
16
17
18
19
20
# File 'lib/weapon.rb', line 12

def makesure_in_git
  run "spring stop"
  unless (run "git remote -v")
    puts "this project should in version controll use git"
    run "git init"
    run "git add *"
    run "git commit -a -m 'first commit'"
  end
end

#push_to_githubObject



101
102
103
104
105
106
107
# File 'lib/weapon.rb', line 101

def push_to_github
  invoke :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_deployObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/weapon.rb', line 23

def setup_mina_deploy
  invoke :makesure_in_git
  puts "setup mina deploy"
  run "mina init"
  username = ask("input your user name on deploy host:")
  File.open('config/deploy.rb', 'a') { |f| f.write("\nset :user, '#{username}' ")}
  domain = ask("input your deploy host, like example.com or 123.100.100.100:")
  gsub_file "config/deploy.rb", "'foobar.com'", "'" + domain + "'"
  directory = ask("input your deploy directory:")
  directory = directory.gsub(/\/$/, "")
  gsub_file "config/deploy.rb", "/var/www/foobar.com", directory

  repository = ask("input your git remote url to pull from, like [email protected]:seaify/weapon.git ")
  gsub_file "config/deploy.rb", "git://...", repository

  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 'mina deploy'
end

#setup_settings_uiObject



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/weapon.rb', line 47

def setup_settings_ui
  invoke :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