h2ocube_rails_tasks 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in zfben_rails_rake.gemspec
4
+ gemspec
data/README.rdoc ADDED
@@ -0,0 +1,43 @@
1
+ == SUMMARY
2
+
3
+ This is plugin to add some useful tasks to rails.
4
+
5
+ # has .git folder
6
+ rake git:clear # Clear files in .gitignore
7
+ rake git:commit[comment] # Git commit with your comment
8
+ rake git:pull # Git pull
9
+ rake git:push[comment] # Git push with your comment
10
+
11
+ # has unicorn.rb
12
+ rake unicorn:restart # Hot restart unicorn server
13
+ rake unicorn:start # Start unicorn server
14
+ rake unicorn:stop # Stop unicorn server
15
+
16
+ # has config/mongoid.yml
17
+ rake mongodb:start # Start Mongodb
18
+ rake mongodb:stop # Stop Mongodb
19
+ rake mongodb:dump # mongodump
20
+ rake mongodb:clear # Clear mongo folder
21
+ rake mongodb:restore # mongorestore
22
+ rake mongodb:repair # Repair Mongodb
23
+
24
+ # has initializers/resque.rb
25
+ rake resque:clear # Clear Resque data
26
+ rake resque:debug # Start Resque for debug
27
+ rake resque:start # Start Resque daemon worker
28
+ rake resque:stop # Stop Resque worker
29
+ rake resque:web # Start Resque web interface
30
+
31
+ == Getting Started
32
+
33
+ 1. adding gem to Gemfile
34
+
35
+ gem 'h2ocube_rails_tasks'
36
+
37
+ 2. update bundle
38
+
39
+ bundle install
40
+
41
+ 3. try `rake -T`, and enjoy it :)
42
+
43
+ take -T
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'h2ocube_rails_tasks'
6
+ s.version = '0.0.1'
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ['Ben']
9
+ s.email = ['ben@h2ocube.com']
10
+ s.homepage = 'https://github.com/h2ocube/h2ocube_rails_tasks'
11
+ s.summary = %q{}
12
+ s.description = %q{}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ s.required_ruby_version = '>= 1.9'
20
+
21
+ s.add_dependency 'rainbow'
22
+ end
@@ -0,0 +1,14 @@
1
+ require 'rainbow'
2
+ require 'fileutils'
3
+ require 'yaml'
4
+
5
+ def zfben_rails_rake_system cmd
6
+ cmd = cmd
7
+ STDOUT.print (cmd + "\n").color(:green)
8
+ zfben_rails_rake_err unless system cmd
9
+ end
10
+
11
+ def zfben_rails_rake_err msg = 'Failed!'
12
+ STDERR.print (msg + "\n").color(:red)
13
+ exit!
14
+ end
@@ -0,0 +1,30 @@
1
+ if File.exists? Rails.root.join('.git')
2
+ namespace :git do
3
+ desc 'Git pull'
4
+ task :pull do
5
+ zfben_rails_rake_system 'git pull'
6
+ end
7
+
8
+ desc 'Git commit with your comment'
9
+ task :commit, [:comment] do |task, args|
10
+ args = args.to_hash
11
+ zfben_rails_rake_system 'git add .'
12
+ comment = args.has_key?(:comment) ? args[:comment] : `git status`
13
+ zfben_rails_rake_system "git commit -m '#{comment}' -a"
14
+ end
15
+
16
+ desc 'Git push with your comment'
17
+ task :push, [:comment] => [:commit] do |task, comment|
18
+ zfben_rails_rake_system 'git push'
19
+ end
20
+
21
+ desc 'Clear files in .gitignore'
22
+ task :clear do
23
+ unless File.exists? Rails.root.join('.gitignore')
24
+ zfben_rails_rake_err '.gitignore is not exists!'
25
+ else
26
+ zfben_rails_rake_system 'git clean -dfX'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,46 @@
1
+ if File.exist? Rails.root.join('config/mongoid.yml')
2
+ namespace :mongodb do
3
+ config = YAML.load(File.read(Rails.root.join('config/mongoid.yml')))[Rails.env.to_s]['sessions']['default']
4
+ db = config['database']
5
+ host = config['hosts'][0].split(':')[0]
6
+ port = config['hosts'][0].split(':')[1]
7
+
8
+ desc 'Start Mongodb'
9
+ task :start do
10
+ zfben_rails_rake_system "mkdir #{Rails.root}/mongo" unless File.exists?(Rails.root.join('mongo'))
11
+ zfben_rails_rake_system "mkdir #{Rails.root}/log" unless File.exists?(Rails.root.join('log'))
12
+ zfben_rails_rake_system "mongod --nohttpinterface --nojournal --port #{port} --bind_ip #{host} --dbpath #{Rails.root}/mongo --fork --logpath #{Rails.root}/log/mongodb.log"
13
+ end
14
+
15
+ desc 'Stop Mongodb'
16
+ task :stop do
17
+ path = Rails.root.join('mongo/mongod.lock').to_s
18
+ if File.exists?(path)
19
+ zfben_rails_rake_system "kill `cat #{path}`"
20
+ zfben_rails_rake_system 'rm ' + path
21
+ end
22
+ end
23
+
24
+ desc 'Clear mongo folder'
25
+ task :clear do
26
+ zfben_rails_rake_system 'rm -r mongo/*'
27
+ end
28
+
29
+ backup = "mongodump --host #{host} --port #{port} --db #{db}"
30
+ desc backup
31
+ task :dump do
32
+ zfben_rails_rake_system backup
33
+ end
34
+
35
+ restore = "mongorestore --host #{host} --port #{port}"
36
+ desc restore
37
+ task :restore do
38
+ zfben_rails_rake_system restore
39
+ end
40
+
41
+ desc 'Repair Mongodb'
42
+ task :repair do
43
+ "mongod --nohttpinterface --nojournal --port #{port} --bind_ip #{host} --dbpath #{Rails.root}/mongo --repair"
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,55 @@
1
+ if File.exists? Rails.root.join('config/initializers/resque.rb')
2
+ namespace :resque do
3
+ require Rails.root.join('config/initializers/resque.rb')
4
+ require 'resque/tasks'
5
+ if defined?(Resque::Scheduler)
6
+ require 'resque_scheduler/tasks'
7
+ end
8
+
9
+ task :setup => :environment
10
+
11
+ task :_work => ['resque:preload', 'resque:setup'] do
12
+ work = Resque::Worker.new('*')
13
+ Process.daemon(true)
14
+ File.open(Rails.root.join('tmp/resque.pid'), 'w') { |f| f << work.pid }
15
+ work.work(5)
16
+ end
17
+
18
+ if defined?(Resque::Scheduler)
19
+ task :_scheduler => 'resque:setup' do
20
+ Process.daemon(true)
21
+ File.open(Rails.root.join('tmp/scheduler.pid'), 'w') { |f| f << Process.pid.to_s }
22
+ Resque::Scheduler.run
23
+ end
24
+ end
25
+
26
+ desc 'Start Resque daemon worker'
27
+ task :start => 'resque:stop' do
28
+ zfben_rails_rake_system "bash -c 'RAILS_ENV=production rake resque:_work'"
29
+ if defined?(Resque::Scheduler)
30
+ zfben_rails_rake_system "bash -c 'RAILS_ENV=production rake resque:_scheduler'"
31
+ end
32
+ end
33
+
34
+ desc 'Stop Resque worker'
35
+ task :stop do
36
+ ['resque', 'scheduler'].each do |name|
37
+ path = Rails.root.join('tmp/' + name + '.pid')
38
+ if File.exists?(path)
39
+ zfben_rails_rake_system "kill `cat #{path}`;rm #{path}"
40
+ end
41
+ end
42
+ end
43
+
44
+ desc 'Clear Resque data'
45
+ task :clear do
46
+ Resque.redis.keys('*').each{ |k| Resque.redis.del k }
47
+ end
48
+
49
+ desc 'Start Resque web interface'
50
+ task :web do
51
+ require 'resque/server'
52
+ Resque::Server.run!
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,31 @@
1
+ if File.exists? Rails.root.join('unicorn.rb')
2
+ namespace :unicorn do
3
+ desc 'Start unicorn server'
4
+ task :start => :stop do
5
+ if File.exists? Rails.root.join('config.ru')
6
+ cmd = 'unicorn'
7
+ else
8
+ cmd = 'unicorn_rails'
9
+ end
10
+ cmd << ' -c unicorn.rb -E production -D'
11
+ zfben_rails_rake_system 'mkdir tmp' unless File.exists? Rails.root.join('tmp')
12
+ zfben_rails_rake_system cmd
13
+ end
14
+
15
+ desc 'Stop unicorn server'
16
+ task :stop do
17
+ if File.exists? Rails.root.join('tmp/unicorn.pid')
18
+ zfben_rails_rake_system 'kill -QUIT `cat tmp/unicorn.pid`'
19
+ sleep 1
20
+ zfben_rails_rake_system 'rm tmp/unicorn.pid' if File.exists? Rails.root.join('tmp/unicorn.pid')
21
+ end
22
+ end
23
+
24
+ desc 'Hot restart unicorn server'
25
+ task :restart do
26
+ if File.exists? Rails.root.join('tmp/unicorn.pid')
27
+ zfben_rails_rake_system 'kill -USR2 `cat tmp/unicorn.pid`'
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ module ZfbenRailsRake
2
+ class Railtie < Rails::Railtie
3
+ railtie_name :h2ocube_rails_tasks
4
+ rake_tasks do
5
+ path = File.dirname(__FILE__) << '/h2ocube_rails_tasks'
6
+ require path + '/helper.rb'
7
+ Dir[path + '/tasks/*.rb'].each{ |f| require f }
8
+ end
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: h2ocube_rails_tasks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ben
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rainbow
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: ''
31
+ email:
32
+ - ben@h2ocube.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - .gitignore
38
+ - Gemfile
39
+ - README.rdoc
40
+ - Rakefile
41
+ - h2ocube_rails_tasks.gemspec
42
+ - lib/h2ocube_rails_tasks.rb
43
+ - lib/h2ocube_rails_tasks/helper.rb
44
+ - lib/h2ocube_rails_tasks/tasks/git.rb
45
+ - lib/h2ocube_rails_tasks/tasks/mongodb.rb
46
+ - lib/h2ocube_rails_tasks/tasks/resque.rb
47
+ - lib/h2ocube_rails_tasks/tasks/unicorn.rb
48
+ homepage: https://github.com/h2ocube/h2ocube_rails_tasks
49
+ licenses: []
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '1.9'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 1.8.24
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: ''
72
+ test_files: []