venus 0.4.1 → 0.5.2

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
@@ -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