venus 0.1.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/CHANGELOG.md ADDED
File without changes
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in bootstrappers.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 marsz
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler/setup'
2
+ require 'bundler/gem_tasks'
data/TODO.md ADDED
File without changes
@@ -0,0 +1,39 @@
1
+ module Venus
2
+ module Generators
3
+ class DeviseGenerator < Base
4
+ desc "Setup devise"
5
+
6
+ def name
7
+ "Devise"
8
+ end
9
+
10
+ def asks
11
+ @views = ask("Generate views? [y/N]").downcase
12
+ # if @views == 'y' && has_gem?('haml')
13
+ # @haml = ask("Use haml? [Y/n]").downcase
14
+ # end
15
+ end
16
+
17
+ def gemfile
18
+ add_gem('devise', "~> 2.1.2")
19
+ run 'bundle install'
20
+ end
21
+
22
+ def generates
23
+ generate 'devise:install'
24
+ generate 'devise User'
25
+ end
26
+
27
+ def views
28
+ if @views == 'y'
29
+ generate 'devise:views -e erb'
30
+ # if @haml != 'n'
31
+ # run 'gem install haml hpricot ruby_parser'
32
+ # run "for i in `find app/views/devise -d -name '*.erb'` ; do html2haml -e $i ${i%erb}haml ; rm $i ; done"
33
+ # end
34
+ end
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,45 @@
1
+ module Venus
2
+ module Generators
3
+ class InitGenerator < Base
4
+ desc "Init Setup"
5
+
6
+ def name
7
+ "initalize"
8
+ end
9
+
10
+ def asks
11
+ @gems = {}
12
+ [:simple_form, :nested_form, :haml, :whenever].each do |gemname|
13
+ @gems[gemname] = ask("install gem '#{gemname}'? [Y/n]").downcase
14
+ end
15
+ @gem_development = ask("install group gems for development? [Y/n]").downcase
16
+ @paginate = ask('install paginate gem "kaminari"? [Y/n]')
17
+ end
18
+
19
+ def gems
20
+ if @gem_development != 'n'
21
+ @is_append = !file_has_content?('Gemfile','group :development do')
22
+ if @is_append
23
+ concat_template('Gemfile', 'gem_developments.erb')
24
+ else
25
+ insert_template('Gemfile', 'gem_developments.erb', :after => 'group :development do')
26
+ end
27
+ end
28
+ @gems.each do |gemname, ans|
29
+ add_gem(gemname.to_s) if ans != 'n' && !has_gem?(gemname)
30
+ end
31
+ end
32
+
33
+ def run_bunle
34
+ run 'bundle install'
35
+ end
36
+
37
+ def paginate
38
+ if @paginate != 'n'
39
+ generate 'venus:paginate'
40
+ end
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,10 @@
1
+
2
+ <%- if @is_append %>group :development do<%- end -%>
3
+
4
+ gem "binding_of_caller"
5
+ gem "better_errors"
6
+ gem "magic_encoding"
7
+ gem "annotate"
8
+ gem "pry-nav"
9
+ gem "pry-remote"
10
+ <%- if @is_append %>end<%- end -%>
@@ -0,0 +1,60 @@
1
+ module Venus
2
+ module Generators
3
+ class OmniauthFbGenerator < Base
4
+ desc "Setup omniauth-fb"
5
+
6
+ def asks
7
+ generate 'venus:settinglogic' unless has_gem?('settingslogic')
8
+ 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?
17
+ end
18
+
19
+
20
+ def name
21
+ "OmniauthFB"
22
+ end
23
+
24
+ def gemfile
25
+ add_gem('omniauth')
26
+ add_gem('omniauth-facebook')
27
+ end
28
+
29
+ def controller
30
+ generate "controller sessions"
31
+ template 'sessions_controller.rb', 'app/controllers/sessions_controller.rb', :force => true
32
+ end
33
+
34
+ def routes
35
+ insert_template("config/routes.rb", "routes.rb", :after => "routes.draw do\n")
36
+ end
37
+
38
+ def model
39
+ migration_template "migration.rb", "db/migrate/add_columns_for_fblogin_to_users"
40
+ insert_template("app/models/user.rb", "user.rb", :before => "\nend\n")
41
+ replace_in_file("app/models/user.rb", " attr_accessible ", " attr_accessible :name, :facebook_id, ")
42
+ end
43
+
44
+ def config
45
+ template 'omniauth.erb', 'config/initializers/omniauth.rb'
46
+ ["config/#{@settinglogic_yml}", "config/#{@settinglogic_yml}.example"].each do |to_file|
47
+ replace_in_file(to_file, "facebook_app_id: ", "facebook_app_id: '#{@fb_app_id}'")
48
+ replace_in_file(to_file, "facebook_secret: ", "facebook_secret: '#{@fb_secret}'")
49
+ end
50
+ end
51
+
52
+ def msg
53
+ if ask("Run 'bundle exec rake db:migrate'? [Y/n]").downcase != 'n'
54
+ run('bundle exec rake db:migrate')
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,7 @@
1
+ class AddColumnsForFbloginToUsers < ActiveRecord::Migration
2
+ def change
3
+ add_column :users, :name, :string, :after => :email
4
+ add_column :users, :facebook_id, :string, :after => :email
5
+ add_index :users, [:facebook_id]
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ Rails.application.config.middleware.use OmniAuth::Builder do
2
+ provider :facebook, <%= @settinglogic_class %>.facebook_app_id, <%= @settinglogic_class %>.facebook_secret, :scope => <%= @settinglogic_class %>.facebook_perms
3
+ end
@@ -0,0 +1,4 @@
1
+
2
+ match '/auth/:provider/callback', :to => 'sessions#create'
3
+ match '/auth/failure' => 'sessions#failure', :as => :auth_failure
4
+ match '/auth/facebook', :as => :facebook_login
@@ -0,0 +1,16 @@
1
+ class SessionsController < ApplicationController
2
+
3
+ def create
4
+ if current_user = User.create_by_omniauth(request.env['omniauth.auth'], current_user)
5
+ flash[:notice] = "Login success"
6
+ sign_in_and_redirect :user, current_user
7
+ else
8
+ redirect_to new_user_session_path, :alert => "Login fail"
9
+ end
10
+ end
11
+
12
+ def failure
13
+ redirect_to new_user_session_path, :alert => params[:message]
14
+ end
15
+
16
+ end
@@ -0,0 +1,15 @@
1
+
2
+ def self.create_by_omniauth(hash, current_user)
3
+ hash = ActiveSupport::HashWithIndifferentAccess.new hash
4
+ user = User.send("find_by_#{hash[:provider]}_id", hash[:uid])
5
+ unless user
6
+ user = current_user || User.find_by_email(hash[:info][:email]) || User.new( :email => hash[:info][:email], :name => hash[:info][:name] )
7
+ user.send("#{hash[:provider]}_id=", hash[:uid])
8
+ user.save!
9
+ end
10
+ user
11
+ end
12
+
13
+ def password_required?
14
+ facebook_id.present? ? false : true
15
+ end
@@ -0,0 +1,34 @@
1
+ module Venus
2
+ module Generators
3
+ class PaginateGenerator < Base
4
+ desc "Paginate"
5
+
6
+ def name
7
+ "Paginate"
8
+ end
9
+
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
14
+ end
15
+ end
16
+
17
+ def gems
18
+ add_gem('kaminari')
19
+ end
20
+
21
+ def run_bunle
22
+ run 'bundle install'
23
+ end
24
+
25
+ def kaminari_views
26
+ if @kaminari_views == 'y'
27
+ haml = @kaminari_haml != 'n' ? ' -e haml' : ''
28
+ generate 'kaminari:views default' + haml
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,41 @@
1
+ module Venus
2
+ module Generators
3
+ class RspecGenerator < Base
4
+ desc "Remove test/ and build rspec"
5
+
6
+ def name
7
+ "Rspec"
8
+ end
9
+
10
+ def remove_test
11
+ remove_dir "test"
12
+ end
13
+
14
+ def set_gemfile
15
+ concat_template("Gemfile", "gemfile.rb")
16
+ run "bundle install"
17
+ generate "rspec:install"
18
+ end
19
+
20
+ def application
21
+ insert_template(
22
+ "config/application.rb",
23
+ "config_application.rb",
24
+ :before => " end\n"
25
+ )
26
+ end
27
+
28
+ def spec_helper
29
+ to_file = "spec/spec_helper.rb"
30
+ insert_template(
31
+ to_file,
32
+ "spec_helper.rb",
33
+ :before => "\nend\n"
34
+ )
35
+ line = ' config.include Devise::TestHelpers, :type => :controller'
36
+ inset_line_into_file(line, to_file, :before => "\nend\n") if has_gem?('devise')
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,12 @@
1
+
2
+ # disable some file generators
3
+ config.generators.stylesheets = false
4
+ config.generators.javascripts = false
5
+ config.generators.helper = false
6
+ config.generators.helper_specs = false
7
+
8
+ # factory gilr
9
+ config.generators do |g|
10
+ g.test_framework :rspec, :fixture => true, :views => false, :fixture_replacement => :factory_girl
11
+ g.fixture_replacement :factory_girl, :dir => "spec/factories"
12
+ end
@@ -0,0 +1,8 @@
1
+
2
+ group :development, :test do
3
+ gem "rspec"
4
+ gem "rspec-rails"
5
+ gem "shoulda-matchers"
6
+ gem "factory_girl_rails"
7
+ gem 'turn', '~> 0.8.3', :require => false
8
+ end
@@ -0,0 +1,2 @@
1
+
2
+ config.mock_with :rspec
@@ -0,0 +1,35 @@
1
+ module Venus
2
+ module Generators
3
+ class SettinglogicGenerator < Base
4
+ desc "Install gem settinglogic"
5
+
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?
11
+ end
12
+
13
+ def name
14
+ "Settinglogic"
15
+ end
16
+
17
+ def gemfile
18
+ add_gem('settingslogic')
19
+ run "bundle install"
20
+ end
21
+
22
+ def config
23
+ template "setting.yml", "config/#{@filename}"
24
+ template "setting.yml", "config/#{@filename}.example"
25
+ insert_line_into_file ".gitignore", "/config/#{@filename}" if has_file?(".gitignore")
26
+ end
27
+
28
+ def class_file
29
+ @setting_name = @setting_class.underscore
30
+ template "setting.erb", "app/lib/#{@setting_name}.rb"
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class <%=@setting_class%> < Settingslogic
3
+ source "#{Rails.root}/config/<%=@filename%>"
4
+ namespace Rails.env
5
+ end
@@ -0,0 +1,23 @@
1
+ defaults: &defaults
2
+ app_name: ""
3
+ host: "localhost"
4
+ facebook_app_id:
5
+ facebook_secret:
6
+ facebook_perms: ''
7
+ admin_emails:
8
+ - ""
9
+ google_analytics_key: ""
10
+ default_logo_url: "/logo.png"
11
+ email: ""
12
+ aws: ""
13
+
14
+ development:
15
+ <<: *defaults
16
+
17
+ test:
18
+ <<: *defaults
19
+
20
+ production:
21
+ <<: *defaults
22
+
23
+
@@ -0,0 +1,87 @@
1
+ require 'rails/generators'
2
+ module Venus
3
+ 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")
9
+ end
10
+ # include Venus::Generators::Helpers
11
+
12
+ def self.source_root
13
+ File.expand_path(File.join(File.dirname(__FILE__), generator_name, 'templates'))
14
+ end
15
+
16
+ private
17
+
18
+ def insert_template(to_file, template_file, options = {})
19
+ insert_content = load_template(template_file)
20
+ if options[:force] == true || !file_has_content?(to_file, insert_content)
21
+ options.delete(:force)
22
+ inject_into_file(to_file,insert_content,options)
23
+ end
24
+ end
25
+
26
+ def insert_line_into_file(to_file, line, options = {})
27
+ if options[:force] == true || !file_has_content?(to_file, line)
28
+ options.delete(:force)
29
+ if(options[:after] || options[:before])
30
+ inject_into_file(to_file, "\n#{line}\n", options)
31
+ else
32
+ append_file(to_file, "\n#{line}")
33
+ end
34
+ end
35
+ end
36
+
37
+ def concat_template(to_file, template_file, options = {})
38
+ insert_content = load_template(template_file)
39
+ if options[:force] == true || !file_has_content?(to_file, insert_content)
40
+ options.delete(:force)
41
+ append_file(to_file, insert_content)
42
+ end
43
+ end
44
+
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}'"
55
+ 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))
62
+ end
63
+
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}"
68
+ end
69
+ File.open(path, "w") { |file| file.write(contents) }
70
+ end
71
+
72
+ def has_gem?(gemname)
73
+ file_has_content?('Gemfile', /gem[ ]+['"]#{gemname}['"]/m)
74
+ end
75
+
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
+ end
86
+ end
87
+ end
data/lib/venus.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "venus/version"
2
+ require "generators/venus/venus"
3
+ module Venus
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module Venus
2
+ VERSION = "0.1.0"
3
+ end
data/venus.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'venus/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "venus"
8
+ gem.version = Venus::VERSION
9
+ gem.authors = ["marsz"]
10
+ gem.email = "marsz@5fpro.com"
11
+ gem.description = %q{ Many rubygems generators & auto configuration. }
12
+ gem.summary = %q{ Many rubygems generators & auto configuration. }
13
+ gem.homepage = "https://github.com/marsz/venus"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'railties'
21
+ gem.add_dependency 'activesupport'
22
+ gem.add_dependency 'bundler', '>= 1.1'
23
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: venus
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - marsz
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: railties
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
+ - !ruby/object:Gem::Dependency
31
+ name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '1.1'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '1.1'
62
+ description: ! ' Many rubygems generators & auto configuration. '
63
+ email: marsz@5fpro.com
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - CHANGELOG.md
69
+ - Gemfile
70
+ - LICENSE.txt
71
+ - README.md
72
+ - Rakefile
73
+ - TODO.md
74
+ - lib/generators/venus/devise/devise_generator.rb
75
+ - lib/generators/venus/init/init_generator.rb
76
+ - 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
83
+ - lib/generators/venus/paginate/paginate_generator.rb
84
+ - lib/generators/venus/rspec/rspec_generator.rb
85
+ - lib/generators/venus/rspec/templates/config_application.rb
86
+ - lib/generators/venus/rspec/templates/gemfile.rb
87
+ - 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
92
+ - lib/venus.rb
93
+ - lib/venus/version.rb
94
+ - venus.gemspec
95
+ homepage: https://github.com/marsz/venus
96
+ licenses: []
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 1.8.24
116
+ signing_key:
117
+ specification_version: 3
118
+ summary: Many rubygems generators & auto configuration.
119
+ test_files: []