venus 0.5.2 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,62 @@
1
+ module Venus
2
+ module Generators
3
+ class CarrierwaveGenerator < Base
4
+ desc "Setup gem 'carrierwave'"
5
+
6
+ def name
7
+ "carrierwave"
8
+ end
9
+
10
+ def asks
11
+ @imagemagick = ask?("Use imagemagick to resize picture?", true)
12
+ @carrierwave_meta = ask?("Install gem 'carrierwave-meta'", true)
13
+ @sample_uploader = ask?("Generate sample uploader?", 'venus')
14
+ @fog = ask?("Use fog to upload file to AWS S3", true)
15
+ if @fog
16
+ @rails_version = ask?("your rails version?", '3.2')
17
+ @rails_version = @rails_version.index("3.2") == 0 ? '3.2' : '3.1'
18
+ say 'checking dependent gems "settinglogic"...'
19
+ generate 'venus:settingslogic' unless has_gem?('settingslogic')
20
+ @settinglogic_class = ask?("Your settinglogic class name?", 'Setting')
21
+ @settinglogic_yml = ask?("Your settinglogic yaml file in config/ ?", 'setting.yml')
22
+ say 'checking dependent gems "aws-sdk"...'
23
+ generate 'venus:aws' unless has_gem?('aws-sdk')
24
+ end
25
+ end
26
+
27
+ def gemfile
28
+ if @rails_version == '3.2'
29
+ add_gem("carrierwave", "~> 0.8.0")
30
+ else
31
+ add_gem("carrierwave", "0.7.1")
32
+ end
33
+ add_gem('rmagick') if @imagemagick
34
+ add_gem("carrierwave-meta", '~> 0.0.4') if @carrierwave_meta
35
+ add_gem('fog') if @fog
36
+ bundle_install
37
+ end
38
+
39
+ def configs
40
+ template "carrierwave_#{@rails_version}.erb", 'config/initializers/carrierwave.rb'
41
+ if @fog
42
+ ["config/#{@settinglogic_yml}", "config/#{@settinglogic_yml}.example"].each do |to_file|
43
+ insert_into_setting_yml(to_file, 'aws_access_key_id', :ask, :hide_in_example => true)
44
+ insert_into_setting_yml(to_file, 'aws_secret_access_key', :ask, :hide_in_example => true)
45
+ @aws_bucket_carrierwave = insert_into_setting_yml(to_file, 'aws_bucket_carrierwave', @aws_bucket_carrierwave || :ask)
46
+ @aws_region_carrierwave = insert_into_setting_yml(to_file, 'aws_region_carrierwave', @aws_region_carrierwave || :ask, :hint => "us-east-1")
47
+ @aws_host_carrierwave = insert_into_setting_yml(to_file, 'aws_host_carrierwave', @aws_host_carrierwave || :ask, :hint => "http://example.com")
48
+ end
49
+ end
50
+ end
51
+
52
+ def sample_uploader
53
+ template "uploader.erb", "app/uploaders/#{@sample_uploader}_uploader.rb"
54
+ end
55
+
56
+ def seemore
57
+ puts "see more configuration in https://github.com/jnicklas/carrierwave"
58
+ end
59
+
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,28 @@
1
+ <% if @fog %>
2
+ CarrierWave.configure do |config|
3
+ config.fog_credentials = {
4
+ :provider => 'AWS',
5
+ :aws_access_key_id => <%=@settinglogic_class%>.aws_access_key_id,
6
+ :aws_secret_access_key => <%=@settinglogic_class%>.aws_secret_access_key,
7
+ :region => <%=@settinglogic_class%>.aws_region_carrierwave
8
+ }
9
+ config.fog_directory = <%=@settinglogic_class%>.aws_bucket_carrierwave
10
+ config.fog_host = <%=@settinglogic_class%>.aws_host_carrierwave
11
+ config.fog_public = true # optional, defaults to true
12
+ end
13
+ <% end %>
14
+
15
+ <% if @carrierwave_meta && @fog %>
16
+ # Fix carrierwave-meta + fog
17
+ module CarrierWave
18
+ module Storage
19
+ class Fog
20
+ class File
21
+ def original_filename
22
+ ::File.basename(path)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ <% end %>
@@ -0,0 +1,28 @@
1
+ <% if @fog %>
2
+ CarrierWave.configure do |config|
3
+ config.fog_credentials = {
4
+ :provider => 'AWS',
5
+ :aws_access_key_id => <%=@settinglogic_class%>.aws_access_key_id,
6
+ :aws_secret_access_key => <%=@settinglogic_class%>.aws_secret_access_key,
7
+ :region => <%=@settinglogic_class%>.aws_region_carrierwave
8
+ }
9
+ config.fog_directory = <%=@settinglogic_class%>.aws_bucket_carrierwave
10
+ config.asset_host = <%=@settinglogic_class%>.aws_host_carrierwave
11
+ config.fog_public = true
12
+ end
13
+ <% end %>
14
+
15
+ <% if @carrierwave_meta && @fog %>
16
+ # Fix carrierwave-meta + fog
17
+ module CarrierWave
18
+ module Storage
19
+ class Fog
20
+ class File
21
+ def original_filename
22
+ ::File.basename(path)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ <% end %>
@@ -0,0 +1,76 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class <%=@sample_uploader.to_s.camelize%>Uploader < CarrierWave::Uploader::Base
3
+ <%- if @imagemagick %>
4
+ include CarrierWave::RMagick<% end %>
5
+ <%- if @carrierwave_meta %>
6
+ include CarrierWave::Meta<% end %>
7
+
8
+ <%- if @fog %>
9
+ storage :fog
10
+ # storage :file
11
+ <%- else %>
12
+ # storage :fog
13
+ storage :file
14
+ <% end %>
15
+
16
+ <%- if @carrierwave_meta %>
17
+ process :store_meta<% end %>
18
+
19
+ <%- if @imagemagick %>
20
+ # Create different versions of your uploaded files:
21
+ version :thumb do
22
+ process :resize_to_fill => [50, 50]
23
+ process :store_meta
24
+ end
25
+
26
+ version :medinum do
27
+ process :resize_to_fit => [300, 300]
28
+ process :store_meta
29
+ end
30
+
31
+
32
+ version :large do
33
+ process :resize_to_limit => [600,600]
34
+ process :store_meta
35
+ end<% end %>
36
+
37
+ # Add a white list of extensions which are allowed to be uploaded.
38
+ # For images you might use something like this:
39
+ # def extension_white_list
40
+ # %w(jpg jpeg gif png)
41
+ # end
42
+
43
+ # Override the filename of the uploaded files:
44
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
45
+
46
+ def default_url
47
+ "http://placehold.it/330&text=pic"
48
+ end
49
+
50
+ def filename
51
+ "#{secure_token}.#{file.extension}" if original_filename.present?
52
+ end
53
+
54
+ def store_dir
55
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{id_partition(model)}"
56
+ end
57
+
58
+ private
59
+
60
+ def secure_token
61
+ var = :"@#{mounted_as}_secure_token"
62
+ model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.uuid)
63
+ end
64
+
65
+ def id_partition(attachment)
66
+ case id = attachment.id
67
+ when Integer
68
+ ("%09d" % id).scan(/\d{3}/).join("/")
69
+ when String
70
+ id.scan(/.{3}/).first(3).join("/")
71
+ else
72
+ nil
73
+ end
74
+ end
75
+
76
+ end
@@ -102,7 +102,7 @@ module Venus
102
102
  end
103
103
  end
104
104
 
105
- def js_assets_require(js_file, required_file)
105
+ def js_assets_require(js_file, required_file, options = {})
106
106
  to_file = "app/assets/javascripts/#{js_file}"
107
107
  line = "//= require #{required_file}"
108
108
  if file_has_content?(to_file, "//= require_self")
@@ -112,10 +112,10 @@ module Venus
112
112
  after = "// GO AFTER THE REQUIRES BELOW." unless file_has_content?(to_file, after)
113
113
  opts = { :after => after }
114
114
  end
115
- insert_line_into_file(to_file, line, opts)
115
+ insert_line_into_file(to_file, line, opts.merge(options))
116
116
  end
117
117
 
118
- def css_assets_require(css_file, required_file)
118
+ def css_assets_require(css_file, required_file, options = {})
119
119
  to_file = "app/assets/stylesheets/#{css_file}"
120
120
  line = " *= require #{required_file}"
121
121
  if file_has_content?(to_file, " *= require_self")
@@ -125,7 +125,7 @@ module Venus
125
125
  after = "/*" unless file_has_content?(to_file, after)
126
126
  opts = { :after => after}
127
127
  end
128
- insert_line_into_file(to_file, line, opts)
128
+ insert_line_into_file(to_file, line, opts.merge(options))
129
129
  end
130
130
 
131
131
  def insert_js_template(js_file, template_file, options = {})
@@ -137,6 +137,21 @@ module Venus
137
137
  insert_line_into_file(to_file, line, opts)
138
138
  concat_template(to_file, template_file, options)
139
139
  end
140
+
141
+ def insert_into_setting_yml(to_file, key, value, opts = {})
142
+ unless file_has_content?(to_file, " #{key}:")
143
+ value = '' if opts[:hide_in_example] && to_file.index('.example')
144
+ value = ask?("value of #{key} in #{to_file}#{opts[:hint] ? " (#{opts[:hint]})" : ""}", '') if value == :ask
145
+ value = "'#{value}'" if value
146
+ if file_has_content?(to_file, "defaults: &defaults\n")
147
+ insert_line_into_file(to_file, " #{key}: #{value}", :after => "defaults: &defaults")
148
+ else
149
+ insert_line_into_file(to_file, " #{key}: #{value}", :after => "development:")
150
+ insert_line_into_file(to_file, " #{key}: #{value}", :after => "test:")
151
+ end
152
+ return value
153
+ end
154
+ end
140
155
  end
141
156
  end
142
157
  end
@@ -0,0 +1,41 @@
1
+ module Venus
2
+ module Generators
3
+ class RedisGenerator < Base
4
+ desc "Setup for redis"
5
+
6
+ def name
7
+ "venus-redis-related"
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
+ @redis_object = ask?("Install gem 'redis-object'", true)
17
+ end
18
+
19
+ def gemfile
20
+ add_gem('redis', '~> 3.0.2')
21
+ add_gem('redis-objects', :require => 'redis/objects') if @redis_object
22
+ bundle_install
23
+ end
24
+
25
+ def configs
26
+ template 'redis.erb', 'config/initializers/redis.rb'
27
+ to_file = "config/#{@settinglogic_yml}"
28
+ [to_file, to_file+".example"].each do |file|
29
+ insert_into_setting_yml(file, "redis", nil)
30
+ insert_line_into_file(file, " host: localhost\n port: 6379\n db: 0", :after => " redis: \n")
31
+ end
32
+ puts "see more redis usage in: http://rdoc.info/github/redis/redis-rb/Redis"
33
+ end
34
+
35
+ def redis_objects
36
+ puts "see more redis-objects usage in: https://github.com/nateware/redis-objects" if @redis_object
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ if <%= @settinglogic_class %>.redis.is_a?(String)
2
+ uri = URI.parse(<%= @settinglogic_class %>.redis)
3
+ Redis.current = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
4
+ else
5
+ Redis.current = Redis.new(<%= @settinglogic_class %>.redis)
6
+ end
7
+ begin
8
+ Redis.current.ping
9
+ rescue
10
+ puts "warring: No redis server! Please install and start redis, install on MacOSX: 'sudo brew install redis', start : 'redis-server /usr/local/etc/redis.conf'"
11
+ end
@@ -1,15 +1,9 @@
1
1
  defaults: &defaults
2
2
  app_name: ""
3
3
  host: "localhost"
4
- facebook_app_id:
5
- facebook_secret:
6
- facebook_perms: ''
7
4
  admin_emails:
8
5
  - ""
9
6
  google_analytics_key: ""
10
- default_logo_url: "/logo.png"
11
- email: ""
12
- aws: ""
13
7
 
14
8
  development:
15
9
  <<: *defaults
data/lib/venus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Venus
2
- VERSION = "0.5.2"
2
+ VERSION = "0.6.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.5.2
4
+ version: 0.6.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-02-10 00:00:00.000000000 Z
12
+ date: 2013-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -68,6 +68,7 @@ extra_rdoc_files: []
68
68
  files:
69
69
  - CHANGELOG.md
70
70
  - Gemfile
71
+ - Gemfile.lock
71
72
  - LICENSE.txt
72
73
  - README.md
73
74
  - Rakefile
@@ -77,6 +78,20 @@ files:
77
78
  - lib/generators/venus/aws/templates/config_application.rb.erb
78
79
  - lib/generators/venus/aws/templates/setting.yml.erb
79
80
  - lib/generators/venus/base.rb
81
+ - lib/generators/venus/bootstrap/bootstrap_generator.rb
82
+ - lib/generators/venus/bootstrap/templates/bootstrap.layout
83
+ - lib/generators/venus/bootstrap/templates/img/breadcrumb.png
84
+ - lib/generators/venus/bootstrap/templates/img/glyphicons-halflings-white.png
85
+ - lib/generators/venus/bootstrap/templates/img/glyphicons-halflings.png
86
+ - lib/generators/venus/bootstrap/templates/img/menu-active.png
87
+ - lib/generators/venus/bootstrap/templates/unicorn.grey.css
88
+ - lib/generators/venus/bootstrap/templates/unicorn.js
89
+ - lib/generators/venus/bootstrap/templates/unicorn.layout
90
+ - lib/generators/venus/bootstrap/templates/unicorn.main.css
91
+ - lib/generators/venus/carrierwave/carrierwave_generator.rb
92
+ - lib/generators/venus/carrierwave/templates/carrierwave_3.1.erb
93
+ - lib/generators/venus/carrierwave/templates/carrierwave_3.2.erb
94
+ - lib/generators/venus/carrierwave/templates/uploader.erb
80
95
  - lib/generators/venus/chosen/chosen_generator.rb
81
96
  - lib/generators/venus/chosen/templates/chosen.js
82
97
  - lib/generators/venus/cron/cron_generator.rb
@@ -103,6 +118,8 @@ files:
103
118
  - lib/generators/venus/omniauth/templates/setting.yml.erb
104
119
  - lib/generators/venus/omniauth/templates/user.erb
105
120
  - lib/generators/venus/paginate/paginate_generator.rb
121
+ - lib/generators/venus/redis/redis_generator.rb
122
+ - lib/generators/venus/redis/templates/redis.erb
106
123
  - lib/generators/venus/rspec/rspec_generator.rb
107
124
  - lib/generators/venus/rspec/templates/config_application.rb
108
125
  - lib/generators/venus/rspec/templates/gemfile.rb