generators_rails 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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