venus 0.4.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -10,7 +10,7 @@ Installation
10
10
  ```ruby
11
11
  group :development do
12
12
  ...
13
- gem 'venus', '~> 0.2.0'
13
+ gem 'venus', '~> 0.5.2'
14
14
  ...
15
15
  end
16
16
  ```
@@ -18,6 +18,24 @@ end
18
18
  Usage
19
19
  =====
20
20
 
21
+ * Setup jQuery UI (including datepicker and more jQuery-UI plugins)
22
+
23
+ ```
24
+ rails generate venus:jqueryui
25
+ ```
26
+
27
+ * Setup chosen for jQuery (see demo: http://harvesthq.github.com/chosen/)
28
+
29
+ ```
30
+ rails generate venus:chosen
31
+ ```
32
+
33
+ * Setup AWS api keys for official aws-sdk (including SES).
34
+
35
+ ```
36
+ rails generate venus:aws
37
+ ```
38
+
21
39
  * Setup Omniauth for multiple omniauth (Facebook, Twitter, Github) in model `User`.
22
40
 
23
41
  ```
@@ -30,6 +48,11 @@ Usage
30
48
  rails generate venus:deploy
31
49
  ```
32
50
 
51
+ * Setup gem 'simple_form' and its related gems (including 'nested_form')
52
+
53
+ ```
54
+ rails generate venus:simple_form
55
+ ```
33
56
 
34
57
  * Essentail gems (simple_form, kminari...etc) and setup (removing public/index.html ...etc).
35
58
 
@@ -70,11 +93,9 @@ Usage
70
93
  TODO
71
94
  ====
72
95
 
73
- * Capistrano with multi-stages extendsion.
74
96
  * MongoDB / Redis configuration.
75
97
  * Twitter Bootstrap layout.
76
98
  * Carrierwave with rmagick & fog.
77
- * Aws SES for sending email.
78
99
  * RailsAdmin or ActiveAdmin.
79
100
  * Sidekiq for background job.
80
101
 
@@ -0,0 +1,45 @@
1
+ module Venus
2
+ module Generators
3
+ class AwsGenerator < Base
4
+ desc "Setup gem for 'aws-sdk'"
5
+
6
+ def name
7
+ "AWS"
8
+ end
9
+
10
+ def asks
11
+ say 'checking dependent gems "settinglogic"...'
12
+ generate 'venus:settingslogic' unless has_gem?('settingslogic')
13
+
14
+ @settinglogic_class = ask?("Your settinglogic class name?", 'Setting')
15
+ @settinglogic_yml = ask?("Your settinglogic yaml file in config/ ?", 'setting.yml')
16
+
17
+ @aws_access_key = ask?("Your AWS access key id?", '')
18
+ @aws_access_secret = ask?("Your AWS secret access key?", '')
19
+
20
+ @setup_email = ask?("Setup SES for mailer?", true)
21
+ end
22
+
23
+ def gemfile
24
+ add_gem('aws-sdk')
25
+ bundle_install
26
+ end
27
+
28
+ def configs
29
+ template 'aws.rb.erb', 'config/initializers/aws.rb'
30
+ ["config/#{@settinglogic_yml}", "config/#{@settinglogic_yml}.example"].each do |to_file|
31
+ insert_template(to_file, "setting.yml.erb", :after => "&defaults\n")
32
+ end
33
+ end
34
+
35
+ def config_application
36
+ insert_template(
37
+ "config/application.rb",
38
+ "config_application.rb.erb",
39
+ :before => " end\n"
40
+ )
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,5 @@
1
+ # aws ses: https://github.com/aws/aws-sdk-ruby/
2
+ AWS.config(
3
+ :access_key_id => <%=@settinglogic_class%>.aws_access_key_id,
4
+ :secret_access_key => <%=@settinglogic_class%>.aws_secret_access_key
5
+ )
@@ -0,0 +1,5 @@
1
+ <%- if @setup_email %>
2
+ setting = YAML.load(File.open("#{Rails.root}/config/<%= @settinglogic_yml%>"))[Rails.env]
3
+ config.action_mailer.default_url_options = { :host => setting["host"] }
4
+ config.action_mailer.delivery_method = :amazon_ses
5
+ <%- end %>
@@ -0,0 +1,2 @@
1
+ aws_access_key_id: "<%=@aws_access_key %>"
2
+ aws_secret_access_key: "<%=@aws_access_secret %>"
@@ -0,0 +1,32 @@
1
+ module Venus
2
+ module Generators
3
+ class ChosenGenerator < Base
4
+ desc "Setup for jQuery chosen"
5
+
6
+ def name
7
+ "chosen"
8
+ end
9
+
10
+ def asks
11
+ @target_js = ask?('target content append for js file?', 'application.js')
12
+ @target_css = ask?('target content append for css file?', 'application.css')
13
+ end
14
+
15
+ def gem
16
+ add_gem('chosen-rails', '~> 0.9.11.2')
17
+ bundle_install
18
+ end
19
+
20
+ def assets
21
+ css_assets_require(@target_css, "chosen")
22
+ insert_js_template(@target_js, "chosen.js")
23
+ js_assets_require(@target_js, "chosen-jquery")
24
+ end
25
+
26
+ def more
27
+ puts "see more: https://github.com/tsechingho/chosen-rails"
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ $(document).ready(function() {
2
+ $('select.chosen').chosen();
3
+ });
@@ -16,6 +16,7 @@ set :default_stage, "<% if @staging %>staging<%else%>production<%end%>"
16
16
 
17
17
  require 'bundler/capistrano'
18
18
  <% if @whenever %>
19
+ set :whenever_command, "bundle exec whenever"
19
20
  require 'whenever/capistrano'<% end %>
20
21
 
21
22
  set :application, "<%= @app_name %>"
@@ -1,7 +1,7 @@
1
- set :rails_env, "<%= @stage[:env] %>"
1
+ set :branch, '<%= @stage[:branch] %>'
2
2
  set :user, '<%= @stage[:user] %>'
3
3
  set :domain, '<%= @stage[:server] %>'
4
- set :branch, '<%= @stage[:branch] %>'
4
+ set :rails_env, "<%= @stage[:env] %>"
5
5
 
6
6
  server "#{domain}", :web, :app, :db, :primary => true
7
7
  set :deploy_to, "/home/#{user}/#{domain}"
@@ -102,6 +102,41 @@ module Venus
102
102
  end
103
103
  end
104
104
 
105
+ def js_assets_require(js_file, required_file)
106
+ to_file = "app/assets/javascripts/#{js_file}"
107
+ line = "//= require #{required_file}"
108
+ if file_has_content?(to_file, "//= require_self")
109
+ opts = { :before => "//= require_self" }
110
+ else
111
+ after = "//= require jquery_ujs"
112
+ after = "// GO AFTER THE REQUIRES BELOW." unless file_has_content?(to_file, after)
113
+ opts = { :after => after }
114
+ end
115
+ insert_line_into_file(to_file, line, opts)
116
+ end
117
+
118
+ def css_assets_require(css_file, required_file)
119
+ to_file = "app/assets/stylesheets/#{css_file}"
120
+ line = " *= require #{required_file}"
121
+ if file_has_content?(to_file, " *= require_self")
122
+ opts = { :before => " *= require_self" }
123
+ else
124
+ after = " * compiled file, but it's generally better to create a new file per style scope."
125
+ after = "/*" unless file_has_content?(to_file, after)
126
+ opts = { :after => after}
127
+ end
128
+ insert_line_into_file(to_file, line, opts)
129
+ end
130
+
131
+ def insert_js_template(js_file, template_file, options = {})
132
+ line = "//= require_self"
133
+ to_file = "app/assets/javascripts/#{js_file}"
134
+ after = "//= require jquery_ujs"
135
+ after = "//= require_tree .\n" if file_has_content?(to_file, "//= require_tree .\n")
136
+ opts = { :after => after }.merge(options)
137
+ insert_line_into_file(to_file, line, opts)
138
+ concat_template(to_file, template_file, options)
139
+ end
105
140
  end
106
141
  end
107
142
  end
@@ -10,28 +10,25 @@ module Venus
10
10
  def asks
11
11
  @gems = {}
12
12
  @paginate = ask?('install paginate gem "kaminari"?', true) unless has_gem?('kaminari')
13
+ generate 'venus:paginate' if @paginate
14
+
13
15
  @whenever = ask?('install scheduling gem "whenever"?', true) unless has_gem?('whenever')
14
- [:simple_form, :nested_form, :haml].each do |gemname|
16
+ generate 'venus:cron' if @whenever
17
+
18
+ [:haml].each do |gemname|
15
19
  @gems[gemname] = ask?("install gem '#{gemname}'?", true)
16
20
  end
21
+
22
+ @simple_form = ask?('install gem "simple_form"?', true) unless has_gem?('simple_form')
23
+ if @simple_form
24
+ generate "venus:simple_form"
25
+ end
17
26
  end
18
27
 
19
28
  def remove_usless_file
20
29
  remove_file 'public/index.html'
21
30
  remove_file 'app/assets/images/rails.png'
22
31
  end
23
-
24
- def paginate
25
- if @paginate
26
- generate 'venus:paginate'
27
- end
28
- end
29
-
30
- def cron
31
- if @whenever
32
- generate 'venus:cron'
33
- end
34
- end
35
32
 
36
33
  def enable_email_delivery_error
37
34
  file = 'config/environments/development.rb'
@@ -54,7 +51,7 @@ module Venus
54
51
  end
55
52
 
56
53
  def run_magic_encoding
57
- run 'magic_encoding'
54
+ run 'bundle exec magic_encoding'
58
55
  end
59
56
 
60
57
  end
@@ -0,0 +1,40 @@
1
+ module Venus
2
+ module Generators
3
+ class JqueryuiGenerator < Base
4
+ desc "Setup for jQuery UI"
5
+
6
+ def name
7
+ "jqueryui"
8
+ end
9
+
10
+ def asks
11
+ @target_js = ask?('target content append for js file?', 'application.js')
12
+ @target_css = ask?('target content append for css file?', 'application.css')
13
+ @datepicker = ask?('setup for datepicker?', true)
14
+ if @datepicker
15
+ puts "datepicker lang list: https://github.com/joliss/jquery-ui-rails/tree/master/vendor/assets/javascripts"
16
+ @datepicker_lang = ask?('datepicker language?', '')
17
+ end
18
+ end
19
+
20
+ def gem
21
+ add_gem('jquery-ui-rails', '~> 4.0.1')
22
+ bundle_install
23
+ end
24
+
25
+ def datepicker
26
+ if @datepicker
27
+ css_assets_require(@target_css, "jquery.ui.datepicker")
28
+ insert_js_template(@target_js, "datepicker.js")
29
+ js_assets_require(@target_js, "jquery.ui.datepicker")
30
+ js_assets_require(@target_js, "jquery.ui.datepicker-#{@datepicker_lang}") if @datepicker_lang.present?
31
+ end
32
+ end
33
+
34
+ def more
35
+ puts "see more: https://github.com/joliss/jquery-ui-rails"
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,5 @@
1
+ $(document).ready(function() {
2
+ $('.datepicker').datepicker({
3
+ dateFormat: "yy-mm-dd"
4
+ });
5
+ });
@@ -36,24 +36,21 @@ module Omniauthable
36
36
 
37
37
  end
38
38
 
39
- module InstanceMethods
40
-
41
- def bind_service(authhash)
42
- authorization = Authorization.find_by_provider_and_uid(authhash['provider'], authhash['uid'])
43
- unless authorization
44
- authorization = authorizations.create! :uid => authhash['uid'], :provider => authhash['provider'], :auth_data => authhash
45
- end
46
- authorization
47
- end
48
-
49
- def can_bind_to
50
- Setting.providers - (authorizations.map {|auth| auth.provider})
39
+ def bind_service(authhash)
40
+ authorization = Authorization.find_by_provider_and_uid(authhash['provider'], authhash['uid'])
41
+ unless authorization
42
+ authorization = authorizations.create! :uid => authhash['uid'], :provider => authhash['provider'], :auth_data => authhash
51
43
  end
44
+ authorization
45
+ end
52
46
 
53
- def password_required?
54
- false
55
- end
47
+ def can_bind_to
48
+ Setting.providers - (authorizations.map {|auth| auth.provider})
49
+ end
56
50
 
51
+ def password_required?
52
+ false
57
53
  end
58
54
 
55
+
59
56
  end
@@ -0,0 +1,49 @@
1
+ module Venus
2
+ module Generators
3
+ class SimpleFormGenerator < Base
4
+ desc "Setup simpl_for related gems"
5
+
6
+ def name
7
+ "simple_form"
8
+ end
9
+
10
+ def asks
11
+ @gems = {}
12
+ @simple_form_config = ask?('generate simple_form config?', true)
13
+ @nested_form = ask?('install gem "nested_form"?', true) unless has_gem?('nested_form')
14
+ if @nested_form
15
+ @js_callback_target = ask?('JS event callback template target?', 'application.js')
16
+ end
17
+ end
18
+
19
+ def simple_form
20
+ add_gem('simple_form', '~> 2.0.4')
21
+ add_gem('nested_form') if @nested_form
22
+ bundle_install
23
+ end
24
+
25
+ def nested_form
26
+ if @nested_form
27
+ if @js_callback_target.present?
28
+ to_file = "app/assets/javascripts/#{@js_callback_target}"
29
+ line = "//= require jquery_nested_form"
30
+ insert_line_into_file(to_file, line, :after => "//= require jquery_ujs")
31
+ line = "//= require_self"
32
+ insert_line_into_file(to_file, line, :after => "//= require jquery_nested_form")
33
+ concat_template(to_file, "nested_form_event.js")
34
+ else
35
+ puts "see https://github.com/ryanb/nested_form for configuration"
36
+ end
37
+ end
38
+ end
39
+
40
+ def simple_form_generate_theme
41
+ if @simple_form_config
42
+ generate 'simple_form:install --bootstrap'
43
+ # TODO best template views
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,7 @@
1
+ $(document).on('nested:fieldAdded', function(event){
2
+ // this field was just inserted into your form
3
+ var field = event.field;
4
+ // it's a jQuery object already! Now you can find date input
5
+ // var dateField = field.find('.date');
6
+ // dateField.datepicker(); // and activate datepicker on it
7
+ })
data/lib/venus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Venus
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.2"
3
3
  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.4.1
4
+ version: 0.5.2
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-04 00:00:00.000000000 Z
12
+ date: 2013-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -72,7 +72,13 @@ files:
72
72
  - README.md
73
73
  - Rakefile
74
74
  - TODO.md
75
+ - lib/generators/venus/aws/aws_generator.rb
76
+ - lib/generators/venus/aws/templates/aws.rb.erb
77
+ - lib/generators/venus/aws/templates/config_application.rb.erb
78
+ - lib/generators/venus/aws/templates/setting.yml.erb
75
79
  - lib/generators/venus/base.rb
80
+ - lib/generators/venus/chosen/chosen_generator.rb
81
+ - lib/generators/venus/chosen/templates/chosen.js
76
82
  - lib/generators/venus/cron/cron_generator.rb
77
83
  - lib/generators/venus/cron/templates/capistrano.erb
78
84
  - lib/generators/venus/deploy/deploy_generator.rb
@@ -83,6 +89,8 @@ files:
83
89
  - lib/generators/venus/helpers.rb
84
90
  - lib/generators/venus/init/init_generator.rb
85
91
  - lib/generators/venus/init/templates/gem_developments.erb
92
+ - lib/generators/venus/jqueryui/jqueryui_generator.rb
93
+ - lib/generators/venus/jqueryui/templates/datepicker.js
86
94
  - lib/generators/venus/mysql/mysql_generator.rb
87
95
  - lib/generators/venus/mysql/templates/database.yml.erb
88
96
  - lib/generators/venus/omniauth/omniauth_generator.rb
@@ -102,6 +110,8 @@ files:
102
110
  - lib/generators/venus/settingslogic/settingslogic_generator.rb
103
111
  - lib/generators/venus/settingslogic/templates/setting.erb
104
112
  - lib/generators/venus/settingslogic/templates/setting.yml
113
+ - lib/generators/venus/simple_form/simple_form_generator.rb
114
+ - lib/generators/venus/simple_form/templates/nested_form_event.js
105
115
  - lib/venus.rb
106
116
  - lib/venus/version.rb
107
117
  - venus.gemspec