generators_rails 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f14b5288e7f6314003967c8bdd63c0d262c671d1
4
- data.tar.gz: c0f3c0026d7ba821b8c8a55c699e3b9ad53fb25b
3
+ metadata.gz: 914fc3e4b1f4e40599b753681bee0f502b77cff2
4
+ data.tar.gz: d1ff48e2cbef5afec03e5cd2e7910b1899c21f44
5
5
  SHA512:
6
- metadata.gz: 82e70a13388383b0699fa9592145a403dfc6dfb524cf6a19ca3f26f614e9ed4df94d9da6cefb19db2fc1fe886b6bff2f0add1a8365aa3103701afea326b4ed4f
7
- data.tar.gz: bf6f8421208d52d4450711bf3c8a5bf79d60da180f536c6e42d859e2284e4fb199045198270a4669780f29ee185213ac4b8e21c1a7dd46b5d406084fa8571c39
6
+ metadata.gz: 6bce52e3469ef1a1dc723261cfdd13bfb0121fbf459f9a1beed16bf581ce34827228645e14913ddea98e22a34cf67a3ed989ce092f1a81d515993c838f2a6d4f
7
+ data.tar.gz: 412afc6c8bf29fd9a33de550db9e2884e5a9bda74460eced8fc944e0280b6e9106d886bc055d72ca6e074206b2604090bfa1ac8e20dee355d141e8780d30d9ff
@@ -1,11 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Docker
2
4
  class ConfigGenerator < Rails::Generators::Base
3
5
  source_root File.expand_path('../templates', __FILE__)
4
6
 
5
7
  def setup
6
- @base_image_name = ask_with_default('Which Image do you want to from(Base Image)?', default_base_image_name)
7
- @author = ask_with_default('Who is the Author', ENV['USER'])
8
- @service_name = ask_with_default('What is the Service Name', 'app')
8
+ config = file?('docker/dockerconfig.json') ? JSON.parse(File.read('docker/dockerconfig.json')) : {}
9
+ @base_image_name = ask_with_default('Which Image do you want to from(Base Image)?', config['base_name'] || default_base_image_name)
10
+ @author = ask_with_default('Who is the Author', config['author'] || ENV['USER'])
11
+ @service_name = ask_with_default('What is the Service Name', config['service_name'] || 'app')
9
12
  db_type = %w[mongo mysql postgres]
10
13
  say('what type of DB you are using:')
11
14
  print_table(db_type.map.with_index { |a, i| [i + 1, a] })
@@ -17,11 +20,16 @@ module Docker
17
20
  db_select = ask_with_default('choice:', default_choice).to_i
18
21
  @db_type = db_type[db_select - 1]
19
22
  @db = db_content(@db_type)
20
- @service_image_name = ask_with_default('Service Image Name ', default_service_image_name)
21
- @docker_repo_url = ask_with_default('Your docker repo', default_docker_repo)
23
+ @service_image_name = ask_with_default('Service Image Name ', config['image_name'] || default_service_image_name)
24
+ @docker_repo_url = ask_with_default('Your docker repo', config['docker_repo'] || default_docker_repo)
22
25
  @secret = `rake secret`.chop
23
26
  end
24
27
 
28
+ def create_docker_config
29
+ say('creating docker config')
30
+ template 'dockerconfig.json', 'docker/dockerconfig.json'
31
+ end
32
+
25
33
  def create_docker_file
26
34
  say('creating docker file')
27
35
  @db_config_file = if @db_type == 'mongo'
@@ -33,11 +41,13 @@ module Docker
33
41
  end
34
42
 
35
43
  def create_docker_ignore
36
- content = <<-CODE
37
- config/database.yml
38
- config/mongoid.yml
39
- Dockerfile
40
- docker-compose*.yml
44
+ content = <<~CODE
45
+ config/database.yml
46
+ config/mongoid.yml
47
+ Dockerfile
48
+ docker-compose*.yml
49
+ docker/
50
+ lib/tasks/docker.rake
41
51
  CODE
42
52
  filename = '.dockerignore'
43
53
  if file? filename
@@ -48,31 +58,31 @@ CODE
48
58
  end
49
59
 
50
60
  def create_git_ignore
51
- content = <<-CODE
52
- # See https://help.github.com/articles/ignoring-files for more about ignoring files.
53
- #
54
- # If you find yourself ignoring temporary files generated by your text editor
55
- # or operating system, you probably want to add a global ignore instead:
56
- # git config --global core.excludesfile '~/.gitignore_global'
57
-
58
- # Ignore bundler config.
59
- /.bundle
60
-
61
- # Ignore all logfiles and tempfiles.
62
- .rake_tasks
63
- /log/*
64
- !/log/.keep
65
- /tmp
66
- *~
67
- .#*
68
- public/assets
69
- config/settings.local.yml
70
- config/settings/*.local.yml
71
- config/environments/*.local.yml
72
- config/mongoid.yml
73
- cache
74
- spring/*
75
- vendor/*
61
+ content = <<~CODE
62
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
63
+ #
64
+ # If you find yourself ignoring temporary files generated by your text editor
65
+ # or operating system, you probably want to add a global ignore instead:
66
+ # git config --global core.excludesfile '~/.gitignore_global'
67
+
68
+ # Ignore bundler config.
69
+ /.bundle
70
+
71
+ # Ignore all logfiles and tempfiles.
72
+ .rake_tasks
73
+ /log/*
74
+ !/log/.keep
75
+ /tmp
76
+ *~
77
+ .#*
78
+ public/assets
79
+ config/settings.local.yml
80
+ config/settings/*.local.yml
81
+ config/environments/*.local.yml
82
+ config/mongoid.yml
83
+ cache
84
+ spring/*
85
+ vendor/*
76
86
  CODE
77
87
  filename = '.gitignore'
78
88
  if file? filename
@@ -117,7 +127,7 @@ CODE
117
127
  end
118
128
 
119
129
  def default_base_image_name
120
- 'shaoyang/ruby:2.3.4'
130
+ 'shaoyang/ruby:alpine'
121
131
  end
122
132
 
123
133
  def default_service_image_name
@@ -3,7 +3,6 @@ FROM <%=@base_image_name%>
3
3
  MAINTAINER <%=@author%>
4
4
  ADD . /usr/src/app
5
5
  ADD config/<%=@db_config_file%>.docker.yml /usr/src/app/config/<%=@db_config_file%>.yml
6
- ENV RAILS_ENV=production
7
6
  RUN bundle install --local
8
7
  RUN rake assets:precompile
9
- CMD bash -c "rake db:setup&&rails s -b0.0.0.0"
8
+ CMD bash -c "bundle exec rake db:setup&&bundle exec unicorn -p3000 -E $RAILS_ENV"
@@ -4,7 +4,7 @@ volumes:
4
4
  driver: local
5
5
  services:
6
6
  <%=@service_name%>:
7
- image: <%="#{@service_image_name}"%>
7
+ image: <%="#{@service_image_name}"%>:${TAG}
8
8
  environment:
9
9
  - RAILS_ENV=development
10
10
  links:
@@ -4,7 +4,7 @@ volumes:
4
4
  driver: local
5
5
  services:
6
6
  <%=@service_name%>:
7
- image: <%="#{@docker_repo_url}/#{@service_image_name}"%>
7
+ image: <%="#{@docker_repo_url}/#{@service_image_name}"%>:${TAG}
8
8
  environment:
9
9
  - RAILS_ENV=production
10
10
  - RAILS_SERVE_STATIC_FILES=true
@@ -3,49 +3,59 @@
3
3
  require 'thor'
4
4
  class Hammer < Thor
5
5
  include Thor::Actions
6
+ source_root '.'
6
7
  end
7
8
 
8
- namespace :docker do
9
- SERVICE = '<%=@service_name%>'.freeze
10
- debug_yml = 'docker/docker-compose.debug.yml'
11
- prod_yml = 'docker/docker-compose.yml'
12
- docker_file = 'docker/Dockerfile'
9
+ class Hash
10
+ def method_missing(methodname, *params)
11
+ if self.class == Hash && key?(methodname.to_s)
12
+ self[methodname.to_s]
13
+ else
14
+ super
15
+ end
16
+ end
17
+ end
13
18
 
19
+ namespace :docker do
20
+ config = JSON.parse(File.read('docker/dockerconfig.json'))
21
+ TAG = ENV['TAG'] || 'latest'
14
22
  desc 'exec bash for service container'
15
23
  task :bash, [:service] do |_t, args|
16
- exec_cmd("docker-compose -f #{debug_yml} exec #{args[:service] || SERVICE} /bin/bash")
24
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec #{args[:service] || config.service_name} #{config.shell_command}")
17
25
  end
18
26
 
19
27
  desc 'destroy all services container'
20
28
  task :down do |_t, _args|
21
- exec_cmd("docker-compose -f #{debug_yml} down")
29
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} down")
22
30
  end
23
31
 
24
- desc 'run rspec with docker'
32
+ desc 'run test with docker'
25
33
  task test: :up do
26
- exec_cmd("docker-compose -f #{debug_yml}\\
27
- exec #{SERVICE} bundle exec rspec spec --format documentation
28
- ")
34
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec #{config.service_name} #{config.test_command}")
35
+ end
36
+
37
+ desc 'run rspec with docker'
38
+ task rspec: :test do
29
39
  end
30
40
 
31
41
  desc 'start service with docker with prod env'
32
42
  task :run do
33
- exec_cmd("docker-compose -f #{prod_yml} up -d")
43
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.prod_yml} up -d")
34
44
  end
35
45
 
36
46
  desc 'start service with docker in debug mode '
37
47
  task :up do
38
- exec_cmd("docker-compose -f #{debug_yml} up -d")
48
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} up -d")
39
49
  end
40
50
 
41
51
  desc 'debug service with docker '
42
52
  task debug: :up do
43
- exec_cmd("docker-compose -f #{debug_yml} exec #{SERVICE} rails s -b0.0.0.0")
53
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec #{config.service_name} #{config.up_command}")
44
54
  end
45
55
 
46
56
  desc 'rubocop service with docker '
47
- task rubocop: :up do
48
- exec_cmd("docker-compose -f #{debug_yml} exec -T #{SERVICE} rubocop -a")
57
+ task lint: :up do
58
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} exec -T #{config.service_name} #{config.lint_command}")
49
59
  end
50
60
 
51
61
  desc 'gitpull'
@@ -54,32 +64,68 @@ namespace :docker do
54
64
  end
55
65
 
56
66
  desc 'precheck before release'
57
- task precommit: %i[rubocop test gitpull] do |_t, _args|
58
- exec_cmd("docker-compose -f #{debug_yml} down")
67
+ task precommit: %i[lint test gitpull] do |_t, _args|
68
+ exec_cmd("TAG=#{TAG} docker-compose -f #{config.debug_yml} down")
59
69
  hammer.say 'Precommit succeed.'
60
70
  end
61
71
 
62
72
  desc 'build as docker image '
63
73
  task :build do
64
- exec_cmd('bundle package --all')
65
- exec_cmd("docker build -t <%=@service_image_name%> -f #{docker_file} .")
74
+ exec_cmd(config.package_command.to_s)
75
+ exec_cmd("TAG=#{TAG} docker build -t #{config.image_name}:#{TAG} -f #{config.docker_file} .")
66
76
  end
67
77
 
68
78
  desc 'release docker image '
69
- task :release, [:tag] do |_t, _args|
70
- tag = _args[:tag] || 'latest'
71
- if `docker images -f reference=<%=@service_image_name%>:#{tag} -q`.chop.present?
72
- remote_image = "<%=@docker_repo_url%>/<%=@service_image_name%>:#{tag}"
73
- tag_cmd = "docker tag <%=@service_image_name%> #{remote_image}"
79
+ task :release do |_t, _args|
80
+ if `TAG=#{TAG} docker images -f reference=#{config.image_name}:#{TAG} -q`.chop.present?
81
+ remote_image = "#{config.docker_repo}/#{config.image_name}:#{TAG}"
82
+ tag_cmd = "TAG=#{TAG} docker tag #{config.image_name} #{remote_image}"
74
83
  exec_cmd(tag_cmd)
75
- push_cmd = "docker push #{remote_image}"
84
+ push_cmd = "TAG=#{TAG} docker push #{remote_image}"
76
85
  exec_cmd(push_cmd)
77
- rmi_cmd = "docker rmi #{remote_image}"
86
+ rmi_cmd = "TAG=#{TAG} docker rmi #{remote_image}"
78
87
  exec_cmd(rmi_cmd)
79
88
  hammer.say('pls commit code and push it manually!!')
80
89
  else
81
90
  hammer.say('There is no local image for push')
91
+ end
92
+ end
93
+ desc 'show docker config'
94
+ task :info do
95
+ last_build_time = `docker inspect -f '{{ .Created }}' #{config.image_name}`.chop
96
+ last_build_time = Time.parse(last_build_time).localtime
97
+ puts JSON.pretty_generate(config)
82
98
  end
99
+
100
+ desc 'parse dockerfile and docker-compose'
101
+ task :parse do
102
+ match = ->(rexp) { File.open(config.docker_file).grep(rexp).first.match(rexp)[1] }
103
+ service_config = YAML.load_file(config.prod_yml)
104
+ image = service_config['services'][config.service_name]['image'].match(/((.*)\/)?(.*)/)
105
+ image_name = image[3].gsub('${TAG}', ENV['TAG'] || 'latest')
106
+ last_build_time = `docker inspect -f '{{ .Created }}' #{image_name}`.chop
107
+ last_build_time = Time.parse(last_build_time).localtime
108
+ ret = {
109
+ base_image: match.call(/FROM (.*)/),
110
+ author: match.call(/MAINTAINER (.*)/),
111
+ docker_repo: image[2] || 'docker.io',
112
+ image_name: image_name,
113
+ last_build_at: last_build_time
114
+ }
115
+ File.write(config.docker_parse, ret.to_json)
116
+ puts JSON.pretty_generate(ret)
117
+ end
118
+
119
+ desc 'dump docker task '
120
+ task :dump do
121
+ target_path = hammer.ask('target path?:')
122
+ hammer.directory('./docker', "#{target_path}/docker")
123
+ hammer.copy_file('./lib/tasks/docker.rake', "#{target_path}/docker/docker.rake")
124
+ target_rakefile = "#{target_path}/Rakefile"
125
+ File.open(target_rakefile, 'a') do |f|
126
+ f.puts "import 'docker/docker.rake'"
127
+ f.puts "require 'json'"
128
+ end
83
129
  end
84
130
 
85
131
  private
@@ -0,0 +1,17 @@
1
+ {
2
+ "base_name": "<%=@base_image_name%>",
3
+ "author": "<%=@author%>",
4
+ "docker_repo": "<%=@docker_repo_url%>",
5
+ "image_name": "<%=@service_image_name%>",
6
+ "service_name": "<%=@service_name%>",
7
+ "debug_yml": "docker/docker-compose.debug.yml",
8
+ "prod_yml": "docker/docker-compose.yml",
9
+ "docker_file": "docker/Dockerfile",
10
+ "docker_parse": "docker/.docker_parse.json",
11
+ "test_command": "bundle exec rspec --format documentation",
12
+ "up_command": "bundle exec rails s -b 0.0.0.0",
13
+ "lint_command": "rubocop -a",
14
+ "shell_command": "/bin/bash",
15
+ "package_command": "bundle package",
16
+ "db_type": "<%=@db_type%>"
17
+ }
@@ -2,34 +2,64 @@ module Rancher
2
2
  class ConfigGenerator < Rails::Generators::Base
3
3
  source_root File.expand_path('../templates', __FILE__)
4
4
  def setup
5
- @url = ask('Rancher URL:[example:http://<server_ip>:8080]')
6
- @access_key = ask('ACCESS KEY:')
7
- @secret_key = ask('SECRET KEY:')
8
- @environment = ask('Enviroment Id Or Name:')
5
+ config = file?('rancher/rancherconfig.json') ? load_json_file('rancher/rancherconfig.json') : {}
6
+ docker_config = file?('docker/dockerconfig.json') ? load_json_file('docker/dockerconfig.json') : {}
7
+
8
+ @docker_compose_config = YAML.load_file(docker_config['prod_yml'])
9
+ @services = @docker_compose_config['services'].each_with_object([]) { |(key, _value), r| r << key; }
10
+ @url = ask_with_default('Rancher URL:[example:http://<server_ip>:8080]', config['url'] || '')
11
+ @access_key = ask_with_default('ACCESS KEY:', config['accessKey'])
12
+ @secret_key = ask_with_default('SECRET KEY:', config['secretKey'])
13
+ @environment = ask_with_default('Enviroment Id Or Name:', config['environment'])
14
+ @stack = ask_with_default('stack name:', config['stack'] || File.basename(Dir.getwd))
15
+
9
16
  @debug = false
10
17
  end
11
18
 
19
+ def create_rancher_config
20
+ template 'rancherconfig.json', 'rancher/rancherconfig.json'
21
+ end
22
+
23
+ def ignore_rancher_config
24
+ ignore('.gitignore', 'rancher/rancherconfig.json')
25
+ ignore('.dockerignore', 'rancher/')
26
+ ignore('.dockerignore', 'lib/tasks/rancher.rake')
27
+ end
28
+
29
+ def create_ranche_compose
30
+ template 'rancher-compose.yml', 'rancher/rancher-compose.yml'
31
+ end
32
+
12
33
  def create_rancher_wrapper
13
34
  template 'rancher', 'bin/rancher'
14
35
  run('chmod +x bin/rancher')
15
36
  end
16
37
 
17
- private
18
-
19
- def create_env_var
20
- generate('direnv:config') unless file?('.envrc')
21
- content = <<-CODE
22
- export RANCHER_URL=#{@url}
23
- export RANCHER_ACCESS_KEY=#{@access_key}
24
- export RANCHER_SECRET_KEY=#{@secret_key}
25
- export RANCHER_ENVIORONMENT=#{@environment}
26
- export RANCHER_CLIENT_DEBUG=#{@debug}
27
- CODE
28
- append_to_file '.envrc', content
38
+ def create_rancher_task
39
+ template 'rancher.rake', 'lib/tasks/rancher.rake'
29
40
  end
30
41
 
42
+ private
43
+
31
44
  def file?(path)
32
45
  File.exist?(path)
33
46
  end
47
+
48
+ def ignore(filename, content)
49
+ if file? filename
50
+ append_to_file filename, content
51
+ else
52
+ create_file filename, content
53
+ end
54
+ end
55
+
56
+ def load_json_file(file)
57
+ JSON.parse(File.read(file))
58
+ end
59
+
60
+ def ask_with_default(statement, default_value)
61
+ answer = ask("#{statement}[#{default_value}]:", Thor::Shell::Color::BLUE)
62
+ answer.present? ? answer : default_value
63
+ end
34
64
  end
35
65
  end
@@ -1,6 +1,2 @@
1
1
  #!/bin/bash
2
- rancher --url <%=@RANCHER_URL%>\
3
- --access-key <%=@RANCHER_ACCESS_KEY%>\
4
- --secret-key <%=@RANCHER_SECRET_KEY%>\
5
- --env <%=@RANCHER_ENVIORONMENT%>\
6
- $@
2
+ rancher -c <%="rancher/rancherconfig.json"%> $@
@@ -0,0 +1,7 @@
1
+ version: '2'
2
+ services:
3
+ <%@services.each{|service|%>
4
+ <%=service%>:
5
+ scale: 1
6
+ start_on_create: true
7
+ <%}%>
@@ -0,0 +1,186 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ class Hammer < Thor
5
+ include Thor::Actions
6
+ source_root '.'
7
+ end
8
+
9
+ class Hash
10
+ def method_missing(methodname, *params)
11
+ if self.class == Hash && key?(methodname.to_s)
12
+ self[methodname.to_s]
13
+ else
14
+ super
15
+ end
16
+ end
17
+ end
18
+
19
+ namespace :rancher do
20
+ rancherconfig = 'rancher/rancherconfig.json'
21
+ dockerconfig = 'docker/dockerconfig.json'
22
+ config = File.exist?(rancherconfig) ? JSON.parse(File.read(rancherconfig)) : {}
23
+ docker_config = JSON.parse(File.read(dockerconfig))
24
+ docker_file = 'docker/docker-compose.yml'
25
+ rancher_file = 'rancher/rancher-compose.yml'
26
+ tag = ENV['TAG'] || 'latest'
27
+ RANCHER = "rancher -c #{rancherconfig}".freeze
28
+ File.write('rancher/.env.tmp', "TAG=#{tag}")
29
+ RANCHER_UP = [
30
+ RANCHER,
31
+ 'up',
32
+ "-s #{config.stack}",
33
+ "-f #{docker_file}",
34
+ "-rancher-file #{rancher_file}",
35
+ '-e rancher/.env.tmp'
36
+ ].join(' ')
37
+
38
+ desc 'rancher up current service'
39
+ task :up_service, [:service] do |_t, _args|
40
+ exec_cmd(RANCHER_UP.to_s,
41
+ '--upgrade',
42
+ '--pull',
43
+ _args[:service] || docker_config.service_name)
44
+ end
45
+
46
+ desc 'rancher restart service'
47
+ task :restart, [:service] do |_t, _args|
48
+ exec_cmd(RANCHER.to_s,
49
+ 'restart',
50
+ "#{config.stack}/#{_args[:service] || docker_config.service_name}")
51
+ end
52
+
53
+ desc 'rancher upall'
54
+ task :up, [:deamon] do |_t, _args|
55
+ exec_cmd(RANCHER_UP,
56
+ '--upgrade',
57
+ '--pull #{_args[:deamon]}')
58
+ end
59
+ desc 'rancher inspect stack'
60
+ task :inspect, [:opt] do |_t, _args|
61
+ exec_cmd(RANCHER, 'inspect', '-a')
62
+ end
63
+
64
+ desc 'rancher rm service'
65
+ task :rm do |_t, _args|
66
+ exec_cmd(RANCHER,
67
+ 'rm',
68
+ "#{config.stack}/#{docker_config.service_name}")
69
+ end
70
+
71
+ desc 'rancher rm stack'
72
+ task :rm_stack do |_t, _args|
73
+ exec_cmd(RANCHER,
74
+ 'rm',
75
+ config.stack)
76
+ end
77
+
78
+ desc 'rancher rollback service'
79
+ task :rollback, [:service] do |_t, _args|
80
+ exec_cmd(RANCHER_UP,
81
+ '-r',
82
+ _args[:service] || docker_config.service_name)
83
+ end
84
+
85
+ desc 'rancher upgrade'
86
+ task :upgrade_service, [:service] do |_t, _args|
87
+ exec_cmd(RANCHER_UP,
88
+ '--force-upgrade',
89
+ '--pull',
90
+ _args[:service] || docker_config.service_name)
91
+ end
92
+
93
+ desc 'rancher upgrade-all'
94
+ task :upgrade do |_t, _args|
95
+ exec_cmd(RANCHER_UP, '--force-upgrade', '--pull')
96
+ end
97
+
98
+ desc 'rancher confirm upgrade'
99
+ task :confirm, [:service] do |_t, _args|
100
+ exec_cmd(RANCHER_UP,
101
+ '--confirm-upgrade',
102
+ _args[:service] || docker_config.service_name)
103
+ end
104
+
105
+ desc 'rancher export'
106
+ task :export do |_t, _args|
107
+ exec_cmd(RANCHER, 'export', config.stack)
108
+ end
109
+
110
+ desc 'rancher host'
111
+ task :host do |_t, _args|
112
+ exec_cmd(RANCHER, 'host', '-a')
113
+ end
114
+
115
+ desc 'rancher ls container'
116
+ task :lsc do |_t, _args|
117
+ exec_cmd(RANCHER, 'ps', '-c')
118
+ end
119
+
120
+ desc 'rancher ls service'
121
+ task :lss do |_t, _args|
122
+ exec_cmd(RANCHER, 'ps', '-a')
123
+ end
124
+
125
+ desc 'rancher ls stacks'
126
+ task :lsk do |_t, _args|
127
+ exec_cmd(RANCHER, 'stacks')
128
+ end
129
+
130
+ desc 'rancher ls volume'
131
+ task lsv: [:volume] do |_t, _args|
132
+ end
133
+
134
+ desc 'rancher logs'
135
+ task :logs, [:container] do |_t, _args|
136
+ exec_cmd(RANCHER, 'logs', "#{config.stack}/#{docker_config.service_name}")
137
+ end
138
+
139
+ desc 'rancher exec'
140
+ task :exec, [:container, :cmd] do |_t, _args|
141
+ exec_cmd(RANCHER,
142
+ '-i',
143
+ '-t',
144
+ _args[:container],
145
+ _args[:cmd] || '/bin/bash')
146
+ end
147
+
148
+ desc 'rancher volume'
149
+ task :volume, [:cmd] do |_t, _args|
150
+ exec_cmd(RANCHER,
151
+ 'volume',
152
+ _args[:cmd] || 'ls')
153
+ end
154
+
155
+ desc 'show rancher config'
156
+ task :info do
157
+ puts JSON.pretty_generate(config)
158
+ end
159
+
160
+ desc 'dump rancher task '
161
+ task :dump do
162
+ target_path = hammer.ask('target path?:')
163
+ hammer.directory('./rancher', "#{target_path}/rancher")
164
+ hammer.copy_file('./lib/tasks/rancher.rake', "#{target_path}/rancher/rancher.rake")
165
+ target_rakefile = "#{target_path}/Rakefile"
166
+ File.open(target_rakefile, 'a') do |f|
167
+ f.puts "import 'rancher/rancher.rake'"
168
+ end
169
+ hammer.directory('bin/rancher', "#{target_path}/bin")
170
+ end
171
+
172
+ private
173
+
174
+ def exec_cmd(*cmdstr)
175
+ hammer.say cmdstr.join(' ')
176
+ hammer.run(cmdstr.join(' '))
177
+ end
178
+
179
+ def hello
180
+ p :hello
181
+ end
182
+
183
+ def hammer
184
+ Hammer.new
185
+ end
186
+ end
@@ -0,0 +1,8 @@
1
+ {
2
+ "url": "<%=@url%>",
3
+ "accessKey": "<%=@access_key%>",
4
+ "secretKey": "<%=@secret_key%>",
5
+ "environment": "<%=@environment%>",
6
+ "debug": "<%=@debug%>",
7
+ "stack": "<%=@stack%>"
8
+ }
@@ -1,3 +1,3 @@
1
1
  module GeneratorsRails
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.0.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: generators_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - shaoyang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-13 00:00:00.000000000 Z
11
+ date: 2017-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -59,6 +59,7 @@ files:
59
59
  - lib/generators/docker/config/templates/docker-compose.yml
60
60
  - lib/generators/docker/config/templates/docker.rake
61
61
  - lib/generators/docker/config/templates/dockercfg.yml
62
+ - lib/generators/docker/config/templates/dockerconfig.json
62
63
  - lib/generators/docker/config/templates/mongo.erb
63
64
  - lib/generators/docker/config/templates/mongoid.yml
64
65
  - lib/generators/docker/config/templates/mysql.erb
@@ -66,6 +67,9 @@ files:
66
67
  - lib/generators/rancher/config/USAGE
67
68
  - lib/generators/rancher/config/config_generator.rb
68
69
  - lib/generators/rancher/config/templates/rancher
70
+ - lib/generators/rancher/config/templates/rancher-compose.yml
71
+ - lib/generators/rancher/config/templates/rancher.rake
72
+ - lib/generators/rancher/config/templates/rancherconfig.json
69
73
  - lib/generators/rspec/config/USAGE
70
74
  - lib/generators/rspec/config/config_generator.rb
71
75
  - lib/generators/setup/full/USAGE