plezi 0.12.11 → 0.12.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 62e0baae54098f49628c5839052832c2043ebb8e
4
- data.tar.gz: b2ca34509ef493ea4d6ba05cdd717d18caf3c125
3
+ metadata.gz: 0f12a2dfa8c950088854171c45e5dc7ee421f4ec
4
+ data.tar.gz: 97a219277d93b9202c0a07a15285c3d6f1f395f6
5
5
  SHA512:
6
- metadata.gz: 150705d026352147363f666b1b5caa764a7fc7043a2ebc62fefd15b0402da748477ae9731fb4b60fad448540738fb73792a30406b153e83a5e485df61e2ba4aa
7
- data.tar.gz: 408cd6ca1b67c831f65b1bdbdd38cbca9c96786f2510c12eca380001234263fe23b51882972abb0818ac46f77bb9dc9bd6d6126448e8c42bfd6ed97de547f28c
6
+ metadata.gz: a5a885d9cdc4aba8fd45185b585b8edafe34419cba34af216b1bb0387b041fd7e29fe1f8e35b941f979190e08e0ebb168b00f30ec489667a6b89fc362ea93cd7
7
+ data.tar.gz: b952c39778f6a130b637e8175f10d1b3897a7d0da8093025744d84e8e5cbbb6cbb6441c0a774af20b20e58ea58bb9d0e98bea7e7385eba5e95c1e24d8ec70db2
data/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  ***
4
4
 
5
+ Change log v.0.12.13
6
+
7
+ **Fix**: fixed an error in te rendering engine, where the default :format was an empty String instead of 'html'.
8
+
9
+ **Update**: if `params[:format]` exists, the `params[:format]` will be used to set the format of the template to be rendered (i.e., if `params[:format] == 'json'`, Plezi will look for `template_name.json.erb` instead of `template_name.html.erb`)
10
+
11
+ ***
12
+
13
+ Change log v.0.12.12
14
+
15
+ **Update**: Redis will now connect to the selected database if the database is set in the `ENV['PL_REDIS_URL']`.
16
+
17
+ **Security**: Redis session local storage will now expire after 24 hours from last visit.
18
+
19
+ **Compatibility**: minor fixes and changes in preperation for Ruby 2.3.0. Updated the Session object API to match Iodine (added the `#refresh` method as an alias for `#to_h`).
20
+
21
+ **Change**: changed the `Controller#render` method to accept `:format` instead of `:type`, for more clarity. `:type` is still supported for the 0.12.0 version line.
22
+
23
+ ***
24
+
5
25
  Change log v.0.12.11
6
26
 
7
27
  **Update/Fix**: dedicated methods for Controllers shouldn't be case sensitive. i.e. `/humans` and `/huMans/` should lead to the same route, IF that route is a method called `:humans` within a Controller class.
data/README.md CHANGED
@@ -145,8 +145,8 @@ Broadcasting isn't the only tool Plezi offers, we can also send a message to a s
145
145
 
146
146
  Scale your Websocket application with one line of code:
147
147
 
148
- # REDIS_URL is where Herolu-Redis stores it's URL
149
- ENV['PL_REDIS_URL'] ||= ENV['REDIS_URL'] || "redis://username:password@my.host:6389"
148
+ # REDIS_URL is where Heroku-Redis stores it's URL
149
+ ENV['PL_REDIS_URL'] ||= ENV['REDIS_URL'] || "redis://:password@my.host:6389/0"
150
150
 
151
151
  Websocket messages (broadcasts, unicasts, etc') and even session data (Plezi keeps it away from the client) will now sync using Redis throughout all your server instances.
152
152
 
@@ -225,7 +225,7 @@ Remember to connect to the service from at least two browser windows - to truly
225
225
 
226
226
  # do you need automated redis support?
227
227
  # require 'redis'
228
- # ENV['PL_REDIS_URL'] = "redis://user:password@localhost:6379"
228
+ # ENV['PL_REDIS_URL'] = "redis://:password@localhost:6379/0"
229
229
 
230
230
  class BroadcastCtrl
231
231
  def index
@@ -305,7 +305,7 @@ require './my_plezi_app/environment.rb'
305
305
  require './my_plezi_app/routes.rb'
306
306
 
307
307
  # # Make sure the following is already in your 'my_plezi_app/environment.rb' file:
308
- # ENV['PL_REDIS_URL'] = "redis://username:password@my.host:6379"
308
+ # ENV['PL_REDIS_URL'] = "redis://:password@my.host:6379/0"
309
309
  # Plezi::Settings.redis_channel_name = 'unique_channel_name_for_app_b24270e2'
310
310
 
311
311
  Plezi.start_placebo
data/lib/plezi.rb CHANGED
@@ -48,7 +48,7 @@ require 'plezi/handlers/session.rb'
48
48
  ## erb templating
49
49
  begin
50
50
  require 'erb'
51
- rescue => e
51
+ rescue
52
52
 
53
53
  end
54
54
 
@@ -140,8 +140,6 @@ end
140
140
  module Plezi
141
141
  end
142
142
 
143
- Encoding.default_internal = 'utf-8'
144
- Encoding.default_external = 'utf-8'
145
143
  Iodine.threads = 30
146
144
  Iodine.run { puts "Plezi is feeling optimistic running version #{::Plezi::VERSION}.\n\n"}
147
145
  # PL is a shortcut for the Plezi module, so that `PL == Plezi`.
@@ -15,9 +15,9 @@ module Plezi
15
15
  require 'plezi/version'
16
16
  app_tree["#{app_name}"] ||= IO.read( File.join(@root, "resources" ,"mini_exec.rb")).gsub('appname', app_name)
17
17
  app_tree["#{app_name}.rb"] ||= IO.read( File.join(@root, "resources" ,"mini_app.rb")).gsub('appname', app_name).gsub('appsecret', "#{app_name}_#{SecureRandom.hex}")
18
- app_tree["Procfile"] ||= ""
18
+ app_tree["Procfile"] ||= String.new
19
19
  app_tree["Procfile"] << "\nweb: bundle exec ruby ./#{app_name} -p $PORT\n"
20
- app_tree["Gemfile"] ||= ''
20
+ app_tree["Gemfile"] ||= String.new
21
21
  app_tree["Gemfile"] << "source 'https://rubygems.org'\n\n####################\n# core gems\n\n# include the basic plezi framework and server\ngem 'plezi', '~> #{Plezi::VERSION}'\n"
22
22
  app_tree["Gemfile"] << "\n\n\nruby '#{RUBY_VERSION}'\n"
23
23
  app_tree["templates"] ||= {}
@@ -49,7 +49,7 @@ module Plezi
49
49
  cache_data filename, data if CACHABLE.include? filename.match(/\.([^\.]+)$/)[1]
50
50
  begin
51
51
  IO.binwrite filename, data if save_to_disk
52
- rescue Exception => e
52
+ rescue
53
53
  Plezi.warn("File couldn't be written (#{filename}) - file system error?")
54
54
  end
55
55
  data
@@ -89,7 +89,7 @@ module Plezi
89
89
 
90
90
  # returns true if the file exists on disk or in the cache.
91
91
  def file_exists? filename
92
- ( CACHE_STORE[filename] || File.exists?(filename) ) && true
92
+ ( CACHE_STORE[filename] || File.exist?(filename) ) && true
93
93
  end
94
94
 
95
95
  # returns true if the file has been update since data was last cached.
@@ -10,13 +10,12 @@ module Plezi
10
10
  return false unless ENV['PL_REDIS_URL'] && defined?(::Redis)
11
11
  @redis_locker.synchronize do
12
12
  return @redis if (@redis_sub_thread && @redis_sub_thread.alive?) && @redis # repeat the test once syncing is done.
13
- @redis_uri ||= URI.parse(ENV['PL_REDIS_URL'])
14
13
  @redis.quit if @redis
15
- @redis = ::Redis.new(host: @redis_uri.host, port: @redis_uri.port, password: @redis_uri.password)
14
+ @redis = ::Redis.new(ENV['PL_REDIS_URL'])
16
15
  raise "Redis connction failed for: #{ENV['PL_REDIS_URL']}" unless @redis
17
16
  @redis_sub_thread = Thread.new do
18
17
  begin
19
- ::Redis.new(host: @redis_uri.host, port: @redis_uri.port, password: @redis_uri.password).subscribe(Plezi::Settings.redis_channel_name, Plezi::Settings.uuid) do |on|
18
+ ::Redis.new(ENV['PL_REDIS_URL']).subscribe(Plezi::Settings.redis_channel_name, Plezi::Settings.uuid) do |on|
20
19
  on.message do |channel, msg|
21
20
  ::Plezi::Base::WSObject.forward_message ::Plezi::Base::WSObject.translate_message(msg)
22
21
  end
@@ -48,7 +47,7 @@ module Plezi
48
47
  # for example:
49
48
  # ENV['PL_REDIS_URL'] = ENV['REDISCLOUD_URL']`
50
49
  # or
51
- # ENV['PL_REDIS_URL'] = "redis://username:password@my.host:6379"
50
+ # ENV['PL_REDIS_URL'] = "redis://:password@my.host:6379/0"
52
51
  #
53
52
  # Accepts an optional block that will receive the Redis connection object. i.e.
54
53
  #
@@ -33,7 +33,7 @@ module Plezi
33
33
 
34
34
 
35
35
  def render base_filename, context = ( Object.new.instance_eval { binding } ), &block
36
- @render_library.each {|ext, handler| f = "#{base_filename}.#{ext}".freeze ; return handler.call(f, context, &block) if File.exists?(f) }
36
+ @render_library.each {|ext, handler| f = "#{base_filename}.#{ext}".freeze ; return handler.call(f, context, &block) if File.exist?(f) }
37
37
  false
38
38
  end
39
39
 
@@ -104,8 +104,8 @@ module Plezi
104
104
 
105
105
 
106
106
  def render base_filename, context = ( Object.new.instance_eval { binding } ), &block
107
- handler = @render_library[File.extname(base_filename)[1..-1]]
108
- handler.each {|ext, handler| f = "#{base_filename}.#{ext}".freeze ; return handler.call(f, context, &block) if File.exists?(f) } if handler
107
+ handlers = @render_library[File.extname(base_filename)[1..-1]]
108
+ handlers.each {|ext, handler| f = "#{base_filename}.#{ext}".freeze ; return handler.call(f, context, &block) if File.exists?(f) } if handlers
109
109
  false
110
110
  end
111
111
  end
@@ -78,7 +78,7 @@ module Plezi
78
78
  # representing the index of the application (http://server/)
79
79
  #
80
80
  def redirect_to url, options = {}
81
- return super *[] if defined? super
81
+ return super() if defined? super
82
82
  raise 'Cannot redirect after headers were sent.' if response.headers_sent?
83
83
  url = "#{request.base_url}/#{url.to_s.gsub('_', '/')}" if url.is_a?(Symbol) || ( url.is_a?(String) && url.empty? ) || url.nil?
84
84
  # redirect
@@ -160,7 +160,7 @@ module Plezi
160
160
  # block:: an optional block, in case the template has `yield`, the block will be passed on to the template and it's value will be used inplace of the yield statement.
161
161
  #
162
162
  # options aceept the following keys:
163
- # type:: the types for the `:layout' and 'template'. can be any extention, such as `"json"`. defaults to `"html"`.
163
+ # format:: the format for the `:layout' and 'template'. can be any format (the file's sub-extention), such as `"json"`. defaults to `"html"`.
164
164
  # layout:: a layout template that has at least one `yield` statement where the template will be rendered.
165
165
  # locale:: the I18n locale for the render. (defaults to params\[:locale]) - only if the I18n gem namespace is defined (`require 'i18n'`).
166
166
  #
@@ -181,20 +181,21 @@ module Plezi
181
181
  return render(layout, options) { inner }
182
182
  end
183
183
  # set up defaults
184
- options[:type] ||= 'html'.freeze
184
+ @warned_type ||= (Iodine.warn("Deprecation warning! `#render` method called with optional `:type`. Use `:format` instead!") && true) if options[:type]
185
+ options[:format] ||= (options[:type] || params[:format] || 'html'.freeze).to_s
185
186
  options[:locale] ||= params[:locale].to_sym if params[:locale]
186
187
  #update content-type header
187
- case options[:type]
188
+ case options[:format]
188
189
  when 'html', 'js', 'txt'
189
- response['content-type'] ||= "#{MimeTypeHelper::MIME_DICTIONARY[".#{options[:type]}".freeze]}; charset=utf-8".freeze
190
+ response['content-type'] ||= "#{MimeTypeHelper::MIME_DICTIONARY[".#{options[:format]}".freeze]}; charset=utf-8".freeze
190
191
  else
191
- response['content-type'] ||= "#{MimeTypeHelper::MIME_DICTIONARY[".#{options[:type]}".freeze]}".freeze
192
+ response['content-type'] ||= "#{MimeTypeHelper::MIME_DICTIONARY[".#{options[:format]}".freeze]}".freeze
192
193
  end
193
194
  # Circumvents I18n persistance issues (live updating and thread data storage).
194
195
  I18n.locale = options[:locale] || I18n.default_locale if defined?(I18n) # sets the locale to nil for default behavior even if the locale was set by a previous action - removed: # && options[:locale]
195
196
  # find template and create template object
196
197
  template = [template] if template.is_a?(String)
197
- filename = ( template.is_a?(Array) ? File.join( host_params[:templates].to_s, *template) : File.join( host_params[:templates].to_s, *template.to_s.split('_') ) ) + (options[:type].empty? ? '': ".#{options[:type]}")
198
+ filename = ( template.is_a?(Array) ? File.join( host_params[:templates].to_s, *template) : File.join( host_params[:templates].to_s, *template.to_s.split('_'.freeze) ) ) + (options[:format].empty? ? ''.freeze : ".#{options[:format]}".freeze)
198
199
  ::Plezi::Renderer.render filename, binding, &block
199
200
  end
200
201
 
@@ -211,9 +212,9 @@ module Plezi
211
212
  # respond to websocket special case
212
213
  return :pre_connect if request.upgrade?
213
214
  # respond to save 'new' special case
214
- return (self.class.has_method?(:save) ? :save : false) if (request.request_method =~ /POST|PUT|PATCH/i.freeze) && (params[:id].nil? || params[:id] == 'new')
215
+ return (self.class.has_method?(:save) ? :save : false) if (request.request_method =~ /POST|PUT|PATCH/i.freeze) && (params[:id].nil? || params[:id] == 'new'.freeze)
215
216
  # set DELETE method if simulated
216
- request.request_method = 'DELETE' if params[:_method] && params[:_method].to_s.downcase == 'delete'
217
+ request.request_method = 'DELETE'.freeze if params[:_method] && params[:_method].to_s.downcase == 'delete'.freeze
217
218
  # respond to special :id routing
218
219
  params[:id].to_s.downcase.to_sym.tap { |met| return met if self.class.has_exposed_method?(met) } if params[:id]
219
220
  #review general cases
@@ -92,7 +92,7 @@ module Plezi
92
92
  end
93
93
  module_function
94
94
  def new placebo_class, create = true
95
- new_class_name = "PlaceboPlezi__#{placebo_class.name.gsub /[\:\-\#\<\>\{\}\(\)\s]/, '_'}"
95
+ new_class_name = "PlaceboPlezi__#{placebo_class.name.gsub( /[\:\-\#\<\>\{\}\(\)\s]/ , '_')}"
96
96
  new_class = nil
97
97
  new_class = Module.const_get new_class_name if Module.const_defined? new_class_name
98
98
  unless new_class
@@ -105,7 +105,7 @@ module Plezi
105
105
  i, o = IO.pipe
106
106
  req = {}
107
107
  handler = new_class.new(i, o, req)
108
- io = Placebo::Base::PlaceboIO.new i, handler: handler, request: req
108
+ Placebo::Base::PlaceboIO.new i, handler: handler, request: req
109
109
  handler
110
110
  end
111
111
  end
@@ -120,7 +120,7 @@ module Plezi
120
120
  end
121
121
  dest.default_proc = Plezi::Base::Helpers::HASH_SYM_PROC
122
122
 
123
- url = '/'
123
+ url = '/'.dup
124
124
 
125
125
  @url_array.each do |sec|
126
126
  raise NotImplementedError, "#url_for isn't implemented for this router - Regexp multi-path routes are still being worked on... use a named parameter instead (i.e. '/foo/(:multi_route){route1|route2}/bar')" if REGEXP_FORMATTED_PATH === sec
@@ -130,19 +130,19 @@ module Plezi
130
130
 
131
131
  if param_name && dest[param_name]
132
132
  url << Plezi::Base::Helpers.encode_url(dest.delete(param_name))
133
- url << '/'
133
+ url << '/'.freeze
134
134
  elsif !param_name
135
135
  url << sec
136
- url << '/'
136
+ url << '/'.freeze
137
137
  elsif REGEXP_REQUIRED_PARAMS === sec || REGEXP_OPTIONAL_PARAMS === sec
138
- url << '/'
138
+ url << '/'.freeze
139
139
  elsif REGEXP_FORMATTED_REQUIRED_PARAMS === sec
140
140
  raise ArgumentError, "URL can't be formatted becuse a required parameter (#{param_name.to_s}) isn't specified and it requires a special format (#{REGEXP_FORMATTED_REQUIRED_PARAMS.match(sec)[2]})."
141
141
  end
142
142
  end
143
143
  unless dest.empty?
144
- add = '?'
145
- dest.each {|k, v| url << "#{add}#{Plezi::Base::Helpers.encode_url k}=#{Plezi::Base::Helpers.encode_url v}"; add = '&'}
144
+ add = '?'.freeze
145
+ dest.each {|k, v| url << "#{add}#{Plezi::Base::Helpers.encode_url k}=#{Plezi::Base::Helpers.encode_url v}"; add = '&'.freeze}
146
146
  end
147
147
  url
148
148
 
@@ -177,9 +177,9 @@ module Plezi
177
177
  @url_array = []
178
178
 
179
179
  # prep path string and split it where the '/' charected is unescaped.
180
- @url_array = path.gsub(/(^\/)|(\/$)/, '').gsub(/([^\\])\//, '\1 - /').split ' - /'
180
+ @url_array = path.gsub(/(^\/)|(\/$)/, ''.freeze).gsub(/([^\\])\//, '\1 - /').split ' - /'
181
181
  @url_array.each.with_index do |section, section_index|
182
- if section == '*'
182
+ if section == '*'.freeze
183
183
  # create catch all
184
184
  section_index == 0 ? (@path << "(.*)") : (@path << "(\\/.*)?")
185
185
  # finish
@@ -252,7 +252,7 @@ module Plezi
252
252
  # end
253
253
  m = @path.match path
254
254
  return false unless m
255
- @fill_parameters.each { |k, v| hash[v] = m[k][1..-1] if m[k] && m[k] != '/' }
255
+ @fill_parameters.each { |k, v| hash[v] = m[k][1..-1] if m[k] && m[k] != '/'.freeze }
256
256
  hash
257
257
  end
258
258
 
@@ -270,7 +270,7 @@ module Plezi
270
270
  # flash:: an amazing Hash object that sets temporary cookies for one request only - greate for saving data between redirect calls.
271
271
  #
272
272
  def self.make_controller_magic(controller, container)
273
- new_class_name = "Plezi__#{controller.name.gsub /[\:\-\#\<\>\{\}\(\)\s]/, '_'}"
273
+ new_class_name = "Plezi__#{controller.name.gsub(/[\:\-\#\<\>\{\}\(\)\s]/ , '_'.freeze)}"
274
274
  return Module.const_get new_class_name if Module.const_defined? new_class_name
275
275
  # controller.include Plezi::ControllerMagic
276
276
  controller.instance_exec(container) {|r| include Plezi::ControllerMagic; }
@@ -15,12 +15,12 @@ module Plezi
15
15
  # delete(key); clear;
16
16
  class Session
17
17
 
18
- # The session's lifetime in seconds = 5 days. This is only true when using the built in support for the Redis persistent storage.
19
- SESSION_LIFETIME = 432_000
18
+ # The session's lifetime in seconds = 24 hours. This is only true when using the built in support for the Redis persistent storage.
19
+ SESSION_LIFETIME = 60*60*24
20
20
  # called by the Plezi framework to initiate a session with the id requested
21
21
  def initialize id
22
22
  @id = id
23
- if id && (conn=Plezi.redis)
23
+ if id && Plezi.redis
24
24
  return self
25
25
  end
26
26
  failed
@@ -67,6 +67,7 @@ module Plezi
67
67
  end
68
68
  failed
69
69
  end
70
+ alias :refresh :to_h
70
71
 
71
72
  # @return [String] returns the Session data in YAML format.
72
73
  def to_s
@@ -77,7 +77,7 @@ module Plezi
77
77
  @results << ret if @results
78
78
  ret
79
79
  else
80
- @locker.synchronize { sync &block }
80
+ @locker.synchronize { sync(&block) }
81
81
  end
82
82
  end
83
83
 
@@ -92,6 +92,7 @@ module Plezi
92
92
  module InstanceMethods
93
93
  protected
94
94
 
95
+ # @!visibility public
95
96
  # The following method registers the connections as a unique global identity.
96
97
  #
97
98
  # Like {Plezi::Base::WSObject::SuperClassMethods#notify}, using this method requires an active Redis connection
@@ -134,10 +135,12 @@ module Plezi
134
135
  end
135
136
  end
136
137
 
138
+ # @!visibility public
137
139
  # sends a notification to an Identity. Returns false if the Identity never registered or it's registration expired.
138
140
  def notify identity, event_name, *args
139
141
  self.class.notify identity, event_name, *args
140
142
  end
143
+ # @!visibility public
141
144
  # returns true if the Identity in question is registered to receive notifications.
142
145
  def registered? identity
143
146
  self.class.registered? identity
@@ -29,7 +29,7 @@ module Plezi
29
29
  def self.translate_message msg
30
30
  begin
31
31
  @safe_types ||= [Symbol, Date, Time, Encoding, Struct, Regexp, Range, Set]
32
- data = YAML.safe_load(msg, @safe_types)
32
+ YAML.safe_load(msg, @safe_types)
33
33
  rescue => e
34
34
  Iodine.error "The following could be a security breach attempt:"
35
35
  Iodine.error e
@@ -79,7 +79,7 @@ module Plezi
79
79
  return false if data[:type] && data[:type] != :all && !self.is_a?(data[:type])
80
80
  # return ( self.class.placebo? ? true : we.write(ws.data)) if :method == :to_client
81
81
  return ((data[:type] == :all) ? false : (raise "Broadcasting recieved but no method can handle it - dump:\r\n #{data.to_s}") ) unless self.class.has_super_method?(data[:method])
82
- self.method(data[:method]).call *data[:data]
82
+ self.method(data[:method]).call(*data[:data])
83
83
  end
84
84
 
85
85
  # Get's the websocket's unique identifier for unicast transmissions.
data/lib/plezi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Plezi
2
- VERSION = "0.12.11"
2
+ VERSION = "0.12.13"
3
3
  end
data/plezi.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "iodine", "~> 0.1.12"
21
+ spec.add_dependency "iodine", "~> 0.1.13"
22
22
  spec.add_development_dependency "bundler", "~> 1.7"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
 
@@ -22,7 +22,7 @@
22
22
  ENV['PL_REDIS_URL'] ||= ENV['REDIS_URL'] ||
23
23
  ENV['REDISCLOUD_URL'] ||
24
24
  ENV['REDISTOGO_URL'] ||
25
- nil # "redis://username:password@my.host:6389"
25
+ nil # "redis://:password@my.host:6389/0"
26
26
  # # redis channel name should be changed is using Placebo API
27
27
  # Plezi::Settings.redis_channel_name = 'appsecret'
28
28
 
@@ -68,6 +68,10 @@ host templates: Root.join('templates').to_s,
68
68
  # # I18n re-write, i.e.: `/en/home` will be rewriten as `/home`, while setting params[:locale] to "en"
69
69
  # route "/:locale{#{I18n.available_locales.join "|"}}/*" , false if defined? I18n
70
70
 
71
+ # # Response format re-write, i.e.: `/xml/home` will use .xml templates automatically
72
+ # # with :locale a request might look like `/en/json/...`
73
+ # route "/:format{html|json|xml}/*" , false
74
+
71
75
  # # OAuth2 - Facebook / Google authentication
72
76
  # ENV["FB_APP_ID"] ||= "app id"; ENV["FB_APP_SECRET"] ||= "secret"; ENV['GOOGLE_APP_ID'] = "app id"; ENV['GOOGLE_APP_SECRET'] = "secret"
73
77
  # require 'plezi/oauth' # do this AFTER setting ENV variables.
@@ -18,7 +18,7 @@ if defined? Redis
18
18
  ENV['PL_REDIS_URL'] ||= ENV['REDIS_URL'] ||
19
19
  ENV['REDISCLOUD_URL'] ||
20
20
  ENV['REDISTOGO_URL'] ||
21
- nil # use: "redis://username:password@my.host:6389"
21
+ nil # use: "redis://:password@my.host:6389/0"
22
22
 
23
23
 
24
24
  # ## OR, write your own custom Redis implementation here
@@ -28,10 +28,10 @@ if defined? Redis
28
28
  # ##
29
29
  # ## the following is only sample code for you to change:
30
30
  # RADIS_CHANNEL = 'appsecret'
31
- # RADIS_URI = URI.parse(ENV['REDIS_URL'] || ENV['REDISCLOUD_URL'] || "redis://username:password@my.host:6389")
32
- # RADIS_CONNECTION = Redis.new(host: RADIS_URI.host, port: RADIS_URI.port, password: RADIS_URI.password)
31
+ # RADIS_URI = ENV['REDIS_URL'] || ENV['REDISCLOUD_URL'] || "redis://:password@my.host:6389/0"
32
+ # RADIS_CONNECTION = Redis.new(RADIS_URI)
33
33
  # RADIS_THREAD = Thread.new do
34
- # Redis.new(host: RADIS_URI.host, port: RADIS_URI.port, password: RADIS_URI.password).subscribe(RADIS_CHANNEL) do |on|
34
+ # Redis.new(RADIS_URI).subscribe(RADIS_CHANNEL) do |on|
35
35
  # on.message do |channel, msg|
36
36
  # msg = JSON.parse(msg)
37
37
  # # do stuff, i.e.:
data/resources/routes.rb CHANGED
@@ -13,6 +13,11 @@
13
13
  # i.e.: `/en/home` will be rewriten as `/home`, while setting params[:locale] to "en"
14
14
  route "/:locale{#{I18n.available_locales.join "|"}}/*" , false if defined? I18n
15
15
 
16
+ # # This is an optional re-write route response formats.
17
+ # # Response format re-write, i.e.: `/xml/home` will use .xml templates automatically
18
+ # # with :locale a request might look like `/en/json/...`
19
+ # route "/:format{html|json|xml}/*" , false
20
+
16
21
  ###
17
22
  # add your routes here:
18
23
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plezi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.11
4
+ version: 0.12.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boaz Segev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-12 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iodine
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.12
19
+ version: 0.1.13
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.12
26
+ version: 0.1.13
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement