venus 0.2.0 → 0.3.0
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.
- data/README.md +35 -28
- data/lib/generators/venus/cron/cron_generator.rb +32 -0
- data/lib/generators/venus/cron/templates/capistrano.erb +1 -0
- data/lib/generators/venus/deploy/deploy_generator.rb +71 -0
- data/lib/generators/venus/deploy/templates/deploy.erb +93 -0
- data/lib/generators/venus/deploy/templates/gemfile.erb +9 -0
- data/lib/generators/venus/deploy/templates/stage.erb +7 -0
- data/lib/generators/venus/helpers.rb +1 -1
- data/lib/generators/venus/init/init_generator.rb +15 -8
- data/lib/venus/version.rb +1 -1
- metadata +8 -2
data/README.md
CHANGED
@@ -18,47 +18,54 @@ end
|
|
18
18
|
Usage
|
19
19
|
=====
|
20
20
|
|
21
|
-
|
21
|
+
* Setup gem 'capistrano' for deloyment.
|
22
22
|
|
23
|
-
```
|
24
|
-
rails generate venus:
|
25
|
-
```
|
23
|
+
```
|
24
|
+
rails generate venus:deploy
|
25
|
+
```
|
26
26
|
|
27
|
-
Setting Mysql connection
|
28
27
|
|
29
|
-
|
30
|
-
rails generate venus:mysql
|
31
|
-
```
|
28
|
+
* Essentail gems (simple_form, kminari...etc) and setup (removing public/index.html ...etc).
|
32
29
|
|
33
|
-
|
30
|
+
```
|
31
|
+
rails generate venus:init
|
32
|
+
```
|
34
33
|
|
35
|
-
|
36
|
-
rails generate venus:paginate
|
37
|
-
```
|
34
|
+
* Setup Mysql connection
|
38
35
|
|
39
|
-
|
36
|
+
```
|
37
|
+
rails generate venus:mysql
|
38
|
+
```
|
40
39
|
|
41
|
-
|
42
|
-
rails generate venus:settingslogic
|
43
|
-
```
|
40
|
+
* Pagination gem "kaminari"
|
44
41
|
|
45
|
-
|
42
|
+
```
|
43
|
+
rails generate venus:paginate
|
44
|
+
```
|
46
45
|
|
47
|
-
|
48
|
-
rails generate venus:devise
|
49
|
-
```
|
46
|
+
* Setup gem "settingslogic"
|
50
47
|
|
51
|
-
|
48
|
+
```
|
49
|
+
rails generate venus:settingslogic
|
50
|
+
```
|
52
51
|
|
53
|
-
|
54
|
-
rails generate venus:fbauth
|
55
|
-
```
|
52
|
+
* Setup gem 'devise', default generate model `User`
|
56
53
|
|
57
|
-
|
54
|
+
```
|
55
|
+
rails generate venus:devise
|
56
|
+
```
|
58
57
|
|
59
|
-
|
60
|
-
|
61
|
-
```
|
58
|
+
* Setup Omniauth for Facebook login (model `User`).
|
59
|
+
|
60
|
+
```
|
61
|
+
rails generate venus:fbauth
|
62
|
+
```
|
63
|
+
|
64
|
+
* Setup Rspec testing framework
|
65
|
+
|
66
|
+
```
|
67
|
+
rails generate venus:rspec
|
68
|
+
```
|
62
69
|
|
63
70
|
TODO
|
64
71
|
====
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Venus
|
2
|
+
module Generators
|
3
|
+
class CronGenerator < Base
|
4
|
+
desc "Setup gem 'whenever' for scheduling"
|
5
|
+
|
6
|
+
def name
|
7
|
+
"Cron"
|
8
|
+
end
|
9
|
+
|
10
|
+
def asks
|
11
|
+
@capistrano = ask?("integrate to capistrano?", true) if has_gem?('capistrano') && has_file?('config/deploy.rb')
|
12
|
+
end
|
13
|
+
|
14
|
+
def gemfile
|
15
|
+
add_gem('whenever')
|
16
|
+
run 'bundle install'
|
17
|
+
run 'bundle exec wheneverize .'
|
18
|
+
end
|
19
|
+
|
20
|
+
def capistrano
|
21
|
+
if @capistrano
|
22
|
+
content = load_template('capistrano.erb')
|
23
|
+
to_file = 'config/deploy.rb'
|
24
|
+
unless file_has_content?(to_file, /[^#]*require[ ]*['"]whenever\/capistrano['"]/)
|
25
|
+
prepend_file(to_file, content)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'whenever/capistrano'
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Venus
|
2
|
+
module Generators
|
3
|
+
class DeployGenerator < Base
|
4
|
+
desc "Setup gem 'capistrano' for deployment"
|
5
|
+
|
6
|
+
def name
|
7
|
+
"capistrano"
|
8
|
+
end
|
9
|
+
|
10
|
+
def asks
|
11
|
+
@use_rvm = ask?('use rvm?', true)
|
12
|
+
@use_assets_pipline = ask?('use assets pipline?', true)
|
13
|
+
@use_passenger = ask?('use passenger?', true)
|
14
|
+
@git_uri = ask?('your git repository url?', 'git@github.com:foo/myapp.git')
|
15
|
+
@stage = ask_stage_infomation
|
16
|
+
if ask?('has staging server?', true)
|
17
|
+
@staging = ask_stage_infomation('staging')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def gemfile
|
22
|
+
@is_append = !file_has_content?('Gemfile','group :development do')
|
23
|
+
if @is_append
|
24
|
+
concat_template('Gemfile', 'gemfile.erb')
|
25
|
+
else
|
26
|
+
insert_template('Gemfile', 'gemfile.erb', :after => 'group :development do')
|
27
|
+
end
|
28
|
+
run 'bundle install'
|
29
|
+
end
|
30
|
+
|
31
|
+
def capify
|
32
|
+
run 'bundle exec capify .'
|
33
|
+
end
|
34
|
+
|
35
|
+
def capfile
|
36
|
+
if @use_assets_pipline
|
37
|
+
uncomment_lines('Capfile', 'deploy/assets')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def copy_configs
|
42
|
+
@app_name = app_name
|
43
|
+
@whenever = has_gem?('whenever')
|
44
|
+
template 'deploy.erb', 'config/deploy.rb'
|
45
|
+
template 'stage.erb', 'config/deploy/production.rb'
|
46
|
+
if @staging
|
47
|
+
@stage = @staging
|
48
|
+
template 'stage.erb', 'config/deploy/staging.rb'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def deploy_setup
|
53
|
+
if ask?('setup servers deployment?', true)
|
54
|
+
run 'bundle exec cap production deploy:setup'
|
55
|
+
run 'bundle exec cap staging deploy:setup' if @staging
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def ask_stage_infomation(prefix = 'production')
|
62
|
+
stage = {}
|
63
|
+
stage[:env] = ask?("your #{prefix} server Rails Env?", 'production')
|
64
|
+
stage[:user] = ask?("your #{prefix} server ssh user?", 'apps')
|
65
|
+
stage[:server] = ask?("your #{prefix} server host?", app_name+'.com')
|
66
|
+
stage[:branch] = ask?("your git branch?", 'master')
|
67
|
+
stage
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
|
2
|
+
begin
|
3
|
+
require 'capistrano_colors'
|
4
|
+
rescue LoadError
|
5
|
+
puts "`gem install capistrano_colors` to get output more userfriendly."
|
6
|
+
end
|
7
|
+
|
8
|
+
<% if @use_rvm %>
|
9
|
+
require "rvm/capistrano"
|
10
|
+
set :rvm_type, :system
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
require 'capistrano/ext/multistage'
|
14
|
+
set :stages, %w(production<% if @staging %> staging<%end%>)
|
15
|
+
set :default_stage, "<% if @staging %>staging<%else%>production<%end%>"
|
16
|
+
|
17
|
+
require 'bundler/capistrano'
|
18
|
+
<% if @whenever %>
|
19
|
+
require 'whenever/capistrano'<% end %>
|
20
|
+
|
21
|
+
set :application, "<%= @app_name %>"
|
22
|
+
set :repository, "<%= @git_uri %>"
|
23
|
+
set :scm, :git
|
24
|
+
|
25
|
+
# set :deploy_via, :remote_cache
|
26
|
+
set :git_shallow_clone, 1
|
27
|
+
|
28
|
+
set :scm_verbose, true
|
29
|
+
set :use_sudo, false
|
30
|
+
set :symlink_paths, ['config/database.yml', 'config/setting.yml', 'public/uploads']
|
31
|
+
|
32
|
+
<% if @use_assets_pipline %>
|
33
|
+
# from https://github.com/AF83/capistrano-af83/blob/master/lib/capistrano/af83/deploy/assets.rb
|
34
|
+
set :assets_dependencies, %w(app/assets lib/assets vendor/assets Gemfile.lock config/routes.rb)
|
35
|
+
<%end%>
|
36
|
+
|
37
|
+
namespace :deploy do
|
38
|
+
|
39
|
+
desc "Restart passenger process"
|
40
|
+
task :restart, :roles => [:web], :except => { :no_release => true } do
|
41
|
+
<% if @use_passenger %>
|
42
|
+
run "touch #{current_path}/tmp/restart.txt"
|
43
|
+
<% end %>
|
44
|
+
end
|
45
|
+
|
46
|
+
<% if @use_assets_pipline %>
|
47
|
+
namespace :assets do
|
48
|
+
|
49
|
+
desc <<-DESC
|
50
|
+
Run the asset precompilation rake task. You can specify the full path \
|
51
|
+
to the rake executable by setting the rake variable. You can also \
|
52
|
+
specify additional environment variables to pass to rake via the \
|
53
|
+
asset_env variable. The defaults are:
|
54
|
+
|
55
|
+
set :rake, "rake"
|
56
|
+
set :rails_env, "production"
|
57
|
+
set :asset_env, "RAILS_GROUPS=assets"
|
58
|
+
set :assets_dependencies, fetch(:assets_dependencies) + %w(config/locales/js)
|
59
|
+
DESC
|
60
|
+
task :precompile, :roles => :web, :except => { :no_release => true } do
|
61
|
+
from = source.next_revision(current_revision) rescue nil
|
62
|
+
if !from || capture("cd #{latest_release} && #{source.local.log(from)} #{assets_dependencies.join ' '} | wc -l").to_i > 0
|
63
|
+
run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
|
64
|
+
else
|
65
|
+
logger.info "Skipping asset pre-compilation because there were no asset changes"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
<%end%>
|
70
|
+
|
71
|
+
task :symlink_files, :roles => [:web] do
|
72
|
+
symlink_paths.each do |path|
|
73
|
+
run "ln -sf #{shared_path}/#{path} #{release_path}/#{path}"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
namespace :remote_rake do
|
80
|
+
desc "Run a task on remote servers, ex: cap staging remote_rake:invoke task=cache:clear"
|
81
|
+
task :invoke do
|
82
|
+
run "cd #{deploy_to}/current; RAILS_ENV=#{rails_env} bundle exec rake #{ENV['task']}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# cap staging tail_log
|
87
|
+
task :tail_log, :roles => :app do
|
88
|
+
run "tail -f -n 100 #{shared_path}/log/#{rails_env}.log"
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
after "deploy:finalize_update", "deploy:symlink_files"
|
93
|
+
after "deploy", "deploy:cleanup"
|
@@ -9,11 +9,12 @@ module Venus
|
|
9
9
|
|
10
10
|
def asks
|
11
11
|
@gems = {}
|
12
|
-
|
12
|
+
@paginate = ask?('install paginate gem "kaminari"?', true) unless has_gem?('kaminari')
|
13
|
+
@whenever = ask?('install scheduling gem "whenever"?', true) unless has_gem?('whenever')
|
14
|
+
[:simple_form, :nested_form, :haml].each do |gemname|
|
13
15
|
@gems[gemname] = ask?("install gem '#{gemname}'?", true)
|
14
16
|
end
|
15
17
|
@gem_development = ask?("install group gems for development?", true)
|
16
|
-
@paginate = ask?('install paginate gem "kaminari"?', true) unless has_gem?('kaminari')
|
17
18
|
end
|
18
19
|
|
19
20
|
def remove_usless_file
|
@@ -21,6 +22,18 @@ module Venus
|
|
21
22
|
remove_file 'app/assets/images/rails.png'
|
22
23
|
end
|
23
24
|
|
25
|
+
def paginate
|
26
|
+
if @paginate
|
27
|
+
generate 'venus:paginate'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def cron
|
32
|
+
if @whenever
|
33
|
+
generate 'venus:cron'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
24
37
|
def enable_email_delivery_error
|
25
38
|
file = 'config/environments/development.rb'
|
26
39
|
find = 'raise_delivery_errors = false'
|
@@ -46,12 +59,6 @@ module Venus
|
|
46
59
|
run 'bundle install'
|
47
60
|
end
|
48
61
|
|
49
|
-
def paginate
|
50
|
-
if @paginate
|
51
|
-
generate 'venus:paginate'
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
62
|
end
|
56
63
|
end
|
57
64
|
end
|
data/lib/venus/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: venus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -73,6 +73,12 @@ files:
|
|
73
73
|
- Rakefile
|
74
74
|
- TODO.md
|
75
75
|
- lib/generators/venus/base.rb
|
76
|
+
- lib/generators/venus/cron/cron_generator.rb
|
77
|
+
- lib/generators/venus/cron/templates/capistrano.erb
|
78
|
+
- lib/generators/venus/deploy/deploy_generator.rb
|
79
|
+
- lib/generators/venus/deploy/templates/deploy.erb
|
80
|
+
- lib/generators/venus/deploy/templates/gemfile.erb
|
81
|
+
- lib/generators/venus/deploy/templates/stage.erb
|
76
82
|
- lib/generators/venus/devise/devise_generator.rb
|
77
83
|
- lib/generators/venus/fbauth/fbauth_generator.rb
|
78
84
|
- lib/generators/venus/fbauth/templates/migration.rb
|