venus 0.1.0

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