venus 0.1.0 → 0.2.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 CHANGED
@@ -0,0 +1,82 @@
1
+ Features
2
+ ========
3
+
4
+ * Auto setup rubygems from Gemfile, bundle and generate related files.
5
+ * Can be used in exists project.
6
+
7
+ Installation
8
+ ============
9
+
10
+ ```ruby
11
+ group :development do
12
+ ...
13
+ gem 'venus', '~> 0.2.0'
14
+ ...
15
+ end
16
+ ```
17
+
18
+ Usage
19
+ =====
20
+
21
+ Project basic rubygems
22
+
23
+ ```
24
+ rails generate venus:init
25
+ ```
26
+
27
+ Setting Mysql connection
28
+
29
+ ```
30
+ rails generate venus:mysql
31
+ ```
32
+
33
+ Pagination gem "kaminari"
34
+
35
+ ```
36
+ rails generate venus:paginate
37
+ ```
38
+
39
+ Settings gem "settingslogic"
40
+
41
+ ```
42
+ rails generate venus:settingslogic
43
+ ```
44
+
45
+ gem 'devise', default generate model `User`
46
+
47
+ ```
48
+ rails generate venus:devise
49
+ ```
50
+
51
+ Facebook login (for model `User`)
52
+
53
+ ```
54
+ rails generate venus:fbauth
55
+ ```
56
+
57
+ Rspec testing framework
58
+
59
+ ```
60
+ rails generate venus:rspec
61
+ ```
62
+
63
+ TODO
64
+ ====
65
+
66
+ * Capistrano with multi-stages extendsion.
67
+ * MongoDB / Redis configuration.
68
+ * Twitter Bootstrap layout.
69
+ * Carrierwave with rmagick & fog.
70
+ * Aws SES for sending email.
71
+ * RailsAdmin or ActiveAdmin.
72
+ * Sidekiq for background job.
73
+
74
+ Thanks
75
+ ======
76
+
77
+ Idea is from xdite/bootstrappers (https://github.com/xdite/bootstrappers).
78
+
79
+ Contribution
80
+ ============
81
+
82
+ Just send pull request :)
@@ -0,0 +1,21 @@
1
+ require 'rails/generators'
2
+ require "generators/venus/helpers"
3
+ module Venus
4
+ module Generators
5
+ class Base < ::Rails::Generators::Base
6
+ include Rails::Generators::ResourceHelpers
7
+
8
+ include Rails::Generators::Migration
9
+ def self.next_migration_number(path)
10
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
11
+ end
12
+
13
+ include Venus::Generators::Helpers
14
+
15
+ def self.source_root
16
+ File.expand_path(File.join(File.dirname(__FILE__), generator_name, 'templates'))
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -8,7 +8,7 @@ module Venus
8
8
  end
9
9
 
10
10
  def asks
11
- @views = ask("Generate views? [y/N]").downcase
11
+ @views = ask?("Generate views?", false)
12
12
  # if @views == 'y' && has_gem?('haml')
13
13
  # @haml = ask("Use haml? [Y/n]").downcase
14
14
  # end
@@ -25,7 +25,7 @@ module Venus
25
25
  end
26
26
 
27
27
  def views
28
- if @views == 'y'
28
+ if @views
29
29
  generate 'devise:views -e erb'
30
30
  # if @haml != 'n'
31
31
  # run 'gem install haml hpricot ruby_parser'
@@ -1,24 +1,21 @@
1
1
  module Venus
2
2
  module Generators
3
- class OmniauthFbGenerator < Base
4
- desc "Setup omniauth-fb"
3
+ class FbauthGenerator < Base
4
+ desc "Setup gem 'omniauth-fb'"
5
5
 
6
6
  def asks
7
- generate 'venus:settinglogic' unless has_gem?('settingslogic')
7
+ say 'checking dependent gems "settinglogic"...'
8
+ generate 'venus:settingslogic' unless has_gem?('settingslogic')
9
+ say 'checking dependent gems "devise"...'
8
10
  generate 'venus:devise' unless has_gem?('devise')
9
- @fb_app_id = ask("Facebook App ID? [267188576687915]")
10
- @fb_app_id = '267188576687915' unless @fb_app_id.present?
11
- @fb_secret = ask("Facebook App Secret? [84f72292e1f6b299f4a668f12ed1a7f2]")
12
- @fb_secret = '84f72292e1f6b299f4a668f12ed1a7f2' unless @fb_secret.present?
13
- @settinglogic_class = ask("Your settinglogic class name? [Setting]")
14
- @settinglogic_class = 'Setting' unless @settinglogic_class.present?
15
- @settinglogic_yml = ask("Your settinglogic yaml file? [setting.yml]")
16
- @settinglogic_yml = 'setting.yml' unless @settinglogic_yml.present?
11
+ @fb_app_id = ask?("Facebook App ID?", '267188576687915')
12
+ @fb_secret = ask?("Facebook App Secret?", '84f72292e1f6b299f4a668f12ed1a7f2')
13
+ @settinglogic_class = ask?("Your settinglogic class name?", 'Setting')
14
+ @settinglogic_yml = ask?("Your settinglogic yaml file in config/ ?", 'setting.yml')
17
15
  end
18
16
 
19
-
20
17
  def name
21
- "OmniauthFB"
18
+ "Omniauth FB"
22
19
  end
23
20
 
24
21
  def gemfile
@@ -50,9 +47,7 @@ module Venus
50
47
  end
51
48
 
52
49
  def msg
53
- if ask("Run 'bundle exec rake db:migrate'? [Y/n]").downcase != 'n'
54
- run('bundle exec rake db:migrate')
55
- end
50
+ run('bundle exec rake db:migrate') if ask?("Run 'bundle exec rake db:migrate'?", true)
56
51
  end
57
52
 
58
53
  end
@@ -1,19 +1,48 @@
1
- require 'rails/generators'
2
1
  module Venus
3
2
  module Generators
4
- class Base < ::Rails::Generators::Base
5
- include Rails::Generators::ResourceHelpers
6
- include Rails::Generators::Migration
7
- def self.next_migration_number(path)
8
- Time.now.utc.strftime("%Y%m%d%H%M%S")
3
+ module Helpers
4
+
5
+ private
6
+
7
+ def ask?(message, default_ans = true)
8
+ postfix = " [" + (!!default_ans == default_ans ? (default_ans ? 'Y/n' : 'y/N') : default_ans.to_s) + "]"
9
+ ans = ask("#{message}#{postfix}")
10
+ return (ans.present? ? (['n','N'].include?(ans) ? false : ans) : default_ans)
9
11
  end
10
- # include Venus::Generators::Helpers
11
12
 
12
- def self.source_root
13
- File.expand_path(File.join(File.dirname(__FILE__), generator_name, 'templates'))
13
+ def read_destanation_file(filepath)
14
+ File.open(File.join(destination_root, filepath)).read
15
+ end
16
+
17
+ def file_has_content?(to_file, line)
18
+ read_destanation_file(to_file).index(line)
19
+ end
20
+
21
+ def has_gem?(gemname)
22
+ file_has_content?('Gemfile', /gem[ ]+['"]#{gemname}['"]/m)
23
+ end
24
+
25
+ def has_file?(file)
26
+ File.exists?(File.join(destination_root, file))
27
+ end
28
+
29
+ def load_template(template_file)
30
+ template(template_file, 'tpl', :verbose => false)
31
+ content = read_destanation_file('tpl')
32
+ remove_file('tpl', :verbose => false)
33
+ content
34
+ end
35
+
36
+ def add_gem(gemname, options = {})
37
+ if options.is_a?(Hash)
38
+ options = (options.size > 0 ? options.to_s[1..-2] : "")
39
+ elsif options.is_a?(String)
40
+ options = "'#{options}'"
41
+ end
42
+ options = ", #{options}" if options.size > 0
43
+ append_file("Gemfile", "\ngem '#{gemname}'#{options}\n") unless has_gem?(gemname)
14
44
  end
15
45
 
16
- private
17
46
 
18
47
  def insert_template(to_file, template_file, options = {})
19
48
  insert_content = load_template(template_file)
@@ -42,46 +71,25 @@ module Venus
42
71
  end
43
72
  end
44
73
 
45
- def file_has_content?(to_file, line)
46
- read_destanation_file(to_file).index(line)
47
- end
48
-
49
- def add_gem(gemname, options = {})
50
- gemfile_content = read_destanation_file("Gemfile")
51
- if options.is_a?(Hash)
52
- options = (options.size > 0 ? options.to_s[1..-2] : "")
53
- elsif options.is_a?(String)
54
- options = "'#{options}'"
74
+ def replace_in_file(destanation_file, find, replace)
75
+ contents = read_destanation_file(destanation_file)
76
+ unless contents.gsub!(find, replace)
77
+ raise "#{find.inspect} not found in #{destanation_file}"
55
78
  end
56
- options = ", #{options}" if options.size > 0
57
- append_file("Gemfile", "\ngem '#{gemname}'#{options}\n") unless /\ngem[ ]+['"]#{gemname}['"]/m =~ gemfile_content
58
- end
59
-
60
- def has_file?(file)
61
- File.exists?(File.join(destination_root, file))
79
+ File.open(destanation_file, "w") { |file| file.write(contents) }
62
80
  end
63
81
 
64
- def replace_in_file(relative_path, find, replace)
65
- contents = read_destanation_file(relative_path)
66
- unless contents.gsub!(find, replace)
67
- raise "#{find.inspect} not found in #{relative_path}"
82
+ def add_gitignore(line)
83
+ if has_file?(".gitignore") && !file_has_content?(".gitignore", line)
84
+ insert_line_into_file ".gitignore", line
68
85
  end
69
- File.open(path, "w") { |file| file.write(contents) }
70
86
  end
71
87
 
72
- def has_gem?(gemname)
73
- file_has_content?('Gemfile', /gem[ ]+['"]#{gemname}['"]/m)
88
+ # copy from Rails::Generators::AppGenerator
89
+ def app_name
90
+ File.basename(destination_root)
74
91
  end
75
92
 
76
- def read_destanation_file(filepath)
77
- File.open(File.join(destination_root, filepath)).read
78
- end
79
- def load_template(template_file)
80
- template(template_file, 'tpl', :verbose => false)
81
- content = read_destanation_file('tpl')
82
- remove_file('tpl', :verbose => false)
83
- content
84
- end
85
93
  end
86
94
  end
87
- end
95
+ end
@@ -1,7 +1,7 @@
1
1
  module Venus
2
2
  module Generators
3
3
  class InitGenerator < Base
4
- desc "Init Setup"
4
+ desc "Setup essential gems"
5
5
 
6
6
  def name
7
7
  "initalize"
@@ -10,14 +10,26 @@ module Venus
10
10
  def asks
11
11
  @gems = {}
12
12
  [:simple_form, :nested_form, :haml, :whenever].each do |gemname|
13
- @gems[gemname] = ask("install gem '#{gemname}'? [Y/n]").downcase
13
+ @gems[gemname] = ask?("install gem '#{gemname}'?", true)
14
14
  end
15
- @gem_development = ask("install group gems for development? [Y/n]").downcase
16
- @paginate = ask('install paginate gem "kaminari"? [Y/n]')
15
+ @gem_development = ask?("install group gems for development?", true)
16
+ @paginate = ask?('install paginate gem "kaminari"?', true) unless has_gem?('kaminari')
17
+ end
18
+
19
+ def remove_usless_file
20
+ remove_file 'public/index.html'
21
+ remove_file 'app/assets/images/rails.png'
22
+ end
23
+
24
+ def enable_email_delivery_error
25
+ file = 'config/environments/development.rb'
26
+ find = 'raise_delivery_errors = false'
27
+ replace = 'raise_delivery_errors = true'
28
+ replace_in_file(file, find, replace) if file_has_content?(file, find)
17
29
  end
18
30
 
19
31
  def gems
20
- if @gem_development != 'n'
32
+ if @gem_development
21
33
  @is_append = !file_has_content?('Gemfile','group :development do')
22
34
  if @is_append
23
35
  concat_template('Gemfile', 'gem_developments.erb')
@@ -26,7 +38,7 @@ module Venus
26
38
  end
27
39
  end
28
40
  @gems.each do |gemname, ans|
29
- add_gem(gemname.to_s) if ans != 'n' && !has_gem?(gemname)
41
+ add_gem(gemname.to_s) if ans
30
42
  end
31
43
  end
32
44
 
@@ -35,7 +47,7 @@ module Venus
35
47
  end
36
48
 
37
49
  def paginate
38
- if @paginate != 'n'
50
+ if @paginate
39
51
  generate 'venus:paginate'
40
52
  end
41
53
  end
@@ -0,0 +1,39 @@
1
+ module Venus
2
+ module Generators
3
+ class MysqlGenerator < Base
4
+ desc "Setup MySql database connection"
5
+
6
+ def asks
7
+ @user = ask?("database login user?", 'root')
8
+ @pass = ask?("database login password?", '')
9
+ @db = ask?("database name? (will append rails env as postfix)", app_name)
10
+ @recreate = ask?("drop db before create?", true)
11
+ end
12
+
13
+ def name
14
+ "MySql"
15
+ end
16
+
17
+ def gemfile
18
+ add_gem('mysql2')
19
+ end
20
+
21
+ def gitignore
22
+ add_gitignore "config/database.yml"
23
+ end
24
+
25
+ def config_yml
26
+ template 'database.yml.erb', 'config/database.yml', :force => true
27
+ @pass = ''
28
+ template 'database.yml.erb', 'config/database.yml.example', :force => true
29
+ run 'bundle install'
30
+ end
31
+
32
+ def create
33
+ run('bundle exec rake db:drop') if @recreate
34
+ run('bundle exec rake db:create')
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,16 @@
1
+ development: &default
2
+ adapter: mysql2
3
+ encoding: utf8
4
+ database: <%= @db %>_development
5
+ host: localhost
6
+ username: '<%= @user %>'
7
+ password: '<%= @pass %>'
8
+
9
+ test: &TEST
10
+ <<: *default
11
+ database: <%= @db %>_test
12
+
13
+ production:
14
+ <<: *default
15
+ database: <%= @db %>_production
16
+
@@ -1,16 +1,16 @@
1
1
  module Venus
2
2
  module Generators
3
3
  class PaginateGenerator < Base
4
- desc "Paginate"
4
+ desc "Pagination gem - 'kaminari'"
5
5
 
6
6
  def name
7
7
  "Paginate"
8
8
  end
9
9
 
10
10
  def asks
11
- @kaminari_views = ask("generate kaminari views? [y/N]").downcase
12
- if has_gem?('haml') && @kaminari_views == 'y'
13
- @kaminari_haml = ask("Haml kaminari views? [Y/n]").downcase
11
+ @kaminari_views = ask?("generate kaminari views?", false)
12
+ if has_gem?('haml') && @kaminari_views
13
+ @kaminari_haml = ask?("Haml kaminari views?", true)
14
14
  end
15
15
  end
16
16
 
@@ -23,7 +23,7 @@ module Venus
23
23
  end
24
24
 
25
25
  def kaminari_views
26
- if @kaminari_views == 'y'
26
+ if @kaminari_views
27
27
  haml = @kaminari_haml != 'n' ? ' -e haml' : ''
28
28
  generate 'kaminari:views default' + haml
29
29
  end
@@ -32,8 +32,10 @@ module Venus
32
32
  "spec_helper.rb",
33
33
  :before => "\nend\n"
34
34
  )
35
- line = ' config.include Devise::TestHelpers, :type => :controller'
36
- inset_line_into_file(line, to_file, :before => "\nend\n") if has_gem?('devise')
35
+ if has_gem?('devise')
36
+ line = ' config.include Devise::TestHelpers, :type => :controller'
37
+ insert_line_into_file(to_file, line, :before => "\nend\n")
38
+ end
37
39
  end
38
40
 
39
41
  end
@@ -1,13 +1,11 @@
1
1
  module Venus
2
2
  module Generators
3
- class SettinglogicGenerator < Base
3
+ class SettingslogicGenerator < Base
4
4
  desc "Install gem settinglogic"
5
5
 
6
6
  def asks
7
- @filename = ask("Your yaml file name in config/ ? [setting.yml]")
8
- @filename = "setting.yml" unless @filename.present?
9
- @setting_class = ask("Your setting class name ? [Setting]")
10
- @setting_class = "Setting" unless @setting_class.present?
7
+ @filename = ask?("Your yaml file name in config/ ?", 'setting.yml')
8
+ @setting_class = ask?("Your setting class name ?", 'Setting')
11
9
  end
12
10
 
13
11
  def name
@@ -22,7 +20,7 @@ module Venus
22
20
  def config
23
21
  template "setting.yml", "config/#{@filename}"
24
22
  template "setting.yml", "config/#{@filename}.example"
25
- insert_line_into_file ".gitignore", "/config/#{@filename}" if has_file?(".gitignore")
23
+ add_gitignore "/config/#{@filename}"
26
24
  end
27
25
 
28
26
  def class_file
data/lib/venus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Venus
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/venus.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "venus/version"
2
- require "generators/venus/venus"
2
+ require "generators/venus/base"
3
3
  module Venus
4
4
  # Your code goes here...
5
5
  end
data/venus.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
8
8
  gem.version = Venus::VERSION
9
9
  gem.authors = ["marsz"]
10
10
  gem.email = "marsz@5fpro.com"
11
- gem.description = %q{ Many rubygems generators & auto configuration. }
12
- gem.summary = %q{ Many rubygems generators & auto configuration. }
11
+ gem.description = %q{ Use rails generator to install and setup rubygems such as rspec, devise, omniauth-facebook...etc. Also can use in exists projects. }
12
+ gem.summary = %q{ Use rails generator to install and setup rubygems such as rspec, devise, omniauth-facebook...etc. Also can use in exists projects. }
13
13
  gem.homepage = "https://github.com/marsz/venus"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_dependency 'railties'
21
- gem.add_dependency 'activesupport'
20
+ gem.add_dependency 'railties', '>=3.1.3'
21
+ gem.add_dependency 'activesupport', '>=3.1.3'
22
22
  gem.add_dependency 'bundler', '>= 1.1'
23
23
  end
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.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 3.1.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 3.1.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: activesupport
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 3.1.3
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 3.1.3
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: bundler
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,8 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.1'
62
- description: ! ' Many rubygems generators & auto configuration. '
62
+ description: ! ' Use rails generator to install and setup rubygems such as rspec,
63
+ devise, omniauth-facebook...etc. Also can use in exists projects. '
63
64
  email: marsz@5fpro.com
64
65
  executables: []
65
66
  extensions: []
@@ -71,24 +72,27 @@ files:
71
72
  - README.md
72
73
  - Rakefile
73
74
  - TODO.md
75
+ - lib/generators/venus/base.rb
74
76
  - lib/generators/venus/devise/devise_generator.rb
77
+ - lib/generators/venus/fbauth/fbauth_generator.rb
78
+ - lib/generators/venus/fbauth/templates/migration.rb
79
+ - lib/generators/venus/fbauth/templates/omniauth.erb
80
+ - lib/generators/venus/fbauth/templates/routes.rb
81
+ - lib/generators/venus/fbauth/templates/sessions_controller.rb
82
+ - lib/generators/venus/fbauth/templates/user.rb
83
+ - lib/generators/venus/helpers.rb
75
84
  - lib/generators/venus/init/init_generator.rb
76
85
  - lib/generators/venus/init/templates/gem_developments.erb
77
- - lib/generators/venus/omniauth_fb/omniauth_fb_generator.rb
78
- - lib/generators/venus/omniauth_fb/templates/migration.rb
79
- - lib/generators/venus/omniauth_fb/templates/omniauth.erb
80
- - lib/generators/venus/omniauth_fb/templates/routes.rb
81
- - lib/generators/venus/omniauth_fb/templates/sessions_controller.rb
82
- - lib/generators/venus/omniauth_fb/templates/user.rb
86
+ - lib/generators/venus/mysql/mysql_generator.rb
87
+ - lib/generators/venus/mysql/templates/database.yml.erb
83
88
  - lib/generators/venus/paginate/paginate_generator.rb
84
89
  - lib/generators/venus/rspec/rspec_generator.rb
85
90
  - lib/generators/venus/rspec/templates/config_application.rb
86
91
  - lib/generators/venus/rspec/templates/gemfile.rb
87
92
  - lib/generators/venus/rspec/templates/spec_helper.rb
88
- - lib/generators/venus/settinglogic/settinglogic_generator.rb
89
- - lib/generators/venus/settinglogic/templates/setting.erb
90
- - lib/generators/venus/settinglogic/templates/setting.yml
91
- - lib/generators/venus/venus.rb
93
+ - lib/generators/venus/settingslogic/settingslogic_generator.rb
94
+ - lib/generators/venus/settingslogic/templates/setting.erb
95
+ - lib/generators/venus/settingslogic/templates/setting.yml
92
96
  - lib/venus.rb
93
97
  - lib/venus/version.rb
94
98
  - venus.gemspec
@@ -115,5 +119,6 @@ rubyforge_project:
115
119
  rubygems_version: 1.8.24
116
120
  signing_key:
117
121
  specification_version: 3
118
- summary: Many rubygems generators & auto configuration.
122
+ summary: Use rails generator to install and setup rubygems such as rspec, devise,
123
+ omniauth-facebook...etc. Also can use in exists projects.
119
124
  test_files: []