wallet 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,35 +7,6 @@ RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION
7
7
  require File.join(File.dirname(__FILE__), 'boot')
8
8
 
9
9
  Rails::Initializer.run do |config|
10
- # Settings in config/environments/* take precedence over those specified here.
11
- # Application configuration should go into files in config/initializers
12
- # -- all .rb files in that directory are automatically loaded.
13
-
14
- # Add additional load paths for your own custom dirs
15
- # config.load_paths += %W( #{RAILS_ROOT}/extras )
16
-
17
- # Specify gems that this application depends on and have them installed with rake gems:install
18
- # config.gem "bj"
19
- # config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
20
- # config.gem "sqlite3-ruby", :lib => "sqlite3"
21
- # config.gem "aws-s3", :lib => "aws/s3"
22
-
23
- # Only load the plugins named here, in the order given (default is alphabetical).
24
- # :all can be used as a placeholder for all plugins not explicitly named
25
- # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
26
-
27
- # Skip frameworks you're not going to use. To use Rails without a database,
28
- # you must remove the Active Record framework.
29
- # config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
30
-
31
- # Activate observers that should always be running
32
- # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
33
-
34
- # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
35
- # Run "rake -D time" for a list of tasks for finding time zone names.
10
+ config.gem "wallet", :lib => 'wallet', :version => '>=0.0.1', :source => "http://gemcutter.org"
36
11
  config.time_zone = 'UTC'
37
-
38
- # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
39
- # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')]
40
- # config.i18n.default_locale = :de
41
- end
12
+ end
@@ -44,6 +44,7 @@ class Wallet
44
44
  yml = YAML.load config_yml rescue nil
45
45
  @config = yml || {}
46
46
  @default_ttl = (eval(@config["default_ttl"]).to_i || 60) rescue 60
47
+ setup_action_caching
47
48
  end
48
49
 
49
50
  # Returns true or false based on whether or not a controller action is configured for caching in the wallet
@@ -87,26 +88,36 @@ class Wallet
87
88
  return *args
88
89
  end
89
90
 
90
- end
91
-
92
- ActionController::Base.class_eval do
93
- before_filter :wallet
94
- @@action_cached_controllers = {}
95
-
96
- def wallet
97
- @wallet ||= Wallet.new((File.open(RAILS_ROOT + "/config/wallet.yml") rescue ""))
98
- controller_class_name = self.class.name
99
- controller = controller_class_name.underscore.gsub(/_controller$/, '')
100
-
101
- # if we haven't already setup action caching on this controller
102
- if @@action_cached_controllers[controller] == nil
103
-
104
- @@action_cached_controllers[controller] = controller
105
- @wallet.cached_actions(controller).each do |action|
106
- puts "I'm setting up action caching for #{controller_class_name}::#{action}"
107
- controller_class_name.constantize.send :caches_action, action.to_sym, :expires_in => @wallet.ttl(controller, action)
91
+ def setup_action_caching
92
+ @config.each do |controller, actions|
93
+ controller_class = (controller + "_controller").camelize.constantize
94
+ cached_actions(controller).each do |action|
95
+ controller_class.send :caches_action, action.to_sym, :expires_in => ttl(controller, action)
108
96
  end
109
97
  end
110
98
  end
111
-
112
99
  end
100
+
101
+ Wallet.new((File.open(RAILS_ROOT + "/config/wallet.yml") rescue ""))
102
+
103
+ #ActionController::Base.class_eval do
104
+ # before_filter :wallet
105
+ # @@action_cached_controllers = {}
106
+ #
107
+ # def wallet
108
+ # @wallet ||= Wallet.new((File.open(RAILS_ROOT + "/config/wallet.yml") rescue ""))
109
+ # controller_class_name = self.class.name
110
+ # controller = controller_class_name.underscore.gsub(/_controller$/, '')
111
+ #
112
+ # # if we haven't already setup action caching on this controller
113
+ # if @@action_cached_controllers[controller] == nil
114
+ #
115
+ # @@action_cached_controllers[controller] = controller
116
+ # @wallet.cached_actions(controller).each do |action|
117
+ # puts "I'm setting up action caching for #{controller_class_name}::#{action}"
118
+ # controller_class_name.constantize.send :caches_action, action.to_sym, :expires_in => @wallet.ttl(controller, action)
119
+ # end
120
+ # end
121
+ # end
122
+ #
123
+ #end
@@ -1,19 +1,19 @@
1
- ActionController::Base.class_eval do
2
- before_filter :wallet
3
- @@action_cached_controllers = {}
4
-
5
- def wallet
6
- @wallet ||= Wallet.new((File.open(RAILS_ROOT + "/config/wallet.yml") rescue ""))
7
- controller_class_name = self.class.name
8
- controller = controller_class_name.underscore.gsub(/_controller$/, '')
9
-
10
- # if we haven't already setup action caching on this controller
11
- if @@action_cached_controllers[controller] == nil
12
- @@action_cached_controllers[controller] = controller
13
- @wallet.cached_actions(controller).each do |action|
14
- controller_class_name.constantize.send :caches_action, action.to_sym, :expires_in => @wallet.ttl(controller, action)
15
- end
16
- end
17
- end
18
-
19
- end if defined?(ActionController::Base)
1
+ #ActionController::Base.class_eval do
2
+ # before_filter :wallet
3
+ # @@action_cached_controllers = {}
4
+ #
5
+ # def wallet
6
+ # @wallet ||= Wallet.new((File.open(RAILS_ROOT + "/config/wallet.yml") rescue ""))
7
+ # controller_class_name = self.class.name
8
+ # controller = controller_class_name.underscore.gsub(/_controller$/, '')
9
+ #
10
+ # # if we haven't already setup action caching on this controller
11
+ # if @@action_cached_controllers[controller] == nil
12
+ # @@action_cached_controllers[controller] = controller
13
+ # @wallet.cached_actions(controller).each do |action|
14
+ # controller_class_name.constantize.send :caches_action, action.to_sym, :expires_in => @wallet.ttl(controller, action)
15
+ # end
16
+ # end
17
+ # end
18
+ #
19
+ #end if defined?(ActionController::Base)
data/lib/wallet/wallet.rb CHANGED
@@ -5,7 +5,10 @@ class Wallet
5
5
 
6
6
  # This error gets thrown whenever you attempt to retreive a TTL
7
7
  # for an action that's not in the wallet.
8
- class ActionNotCached < Exception
8
+ class ActionNotCached < StandardError
9
+ end
10
+
11
+ class UnknownController < StandardError
9
12
  end
10
13
 
11
14
  attr_reader :config #:nodoc:
@@ -44,6 +47,8 @@ class Wallet
44
47
  yml = YAML.load config_yml rescue nil
45
48
  @config = yml || {}
46
49
  @default_ttl = (eval(@config["default_ttl"]).to_i || 60) rescue 60
50
+ @config.delete "default_ttl"
51
+ setup_action_caching
47
52
  end
48
53
 
49
54
  # Returns true or false based on whether or not a controller action is configured for caching in the wallet
@@ -87,4 +92,16 @@ class Wallet
87
92
  return *args
88
93
  end
89
94
 
95
+ def setup_action_caching
96
+ @config.each do |controller, actions|
97
+ begin
98
+ controller_class = (controller + "_controller").camelize.constantize
99
+ cached_actions(controller).each do |action|
100
+ controller_class.send :caches_action, action.to_sym, :expires_in => ttl(controller, action)
101
+ end
102
+ rescue Exception => e
103
+ #raise UnknownController.new("We're sorry, but the controller '#{(controller + "_controller").camelize}' does not exist in app/controllers/")
104
+ end
105
+ end
106
+ end
90
107
  end
data/lib/wallet.rb CHANGED
@@ -1,2 +1,3 @@
1
1
  require 'wallet/wallet'
2
2
  require 'wallet/action_controller'
3
+ Wallet.new((File.open(RAILS_ROOT + "/config/wallet.yml") rescue "")) if defined?(RAILS_ROOT)
@@ -4,7 +4,7 @@ describe Wallet do
4
4
  describe "Wallet::new" do
5
5
  it "should load the config on initialization if provided with a path to a yaml file" do
6
6
  YAML.should_receive(:load).once
7
- wallet = Wallet.new(File.open(File.dirname(__FILE__) + '/../support/wallet.yml'))
7
+ wallet = Wallet.new("channels:\n adult_swim:")
8
8
  wallet.config.should_not == false
9
9
  end
10
10
 
@@ -32,41 +32,41 @@ describe Wallet do
32
32
 
33
33
  describe "Wallet::cached?" do
34
34
  before do
35
- config_yml = "pages:\n show:\n"
35
+ config_yml = "channels:\n cartoon_network:\n"
36
36
  @wallet = Wallet.new config_yml
37
37
  end
38
38
 
39
39
  it "should return true for a controller/action that is cached" do
40
- @wallet.cached?("pages", "show").should == true
40
+ @wallet.cached?("channels", "cartoon_network").should == true
41
41
  end
42
42
 
43
43
  it "should return false for a controller/action that is not cached" do
44
44
  @wallet.cached?("blah", "blah").should == false
45
- @wallet.cached?("pages", "blah").should == false
45
+ @wallet.cached?("channels", "blah").should == false
46
46
  end
47
47
 
48
48
  it "should work with both strings and symbols" do
49
- @wallet.cached?("pages", "show").should == true
50
- @wallet.cached?(:pages, :show).should == true
49
+ @wallet.cached?("channels", "cartoon_network").should == true
50
+ @wallet.cached?(:channels, :cartoon_network).should == true
51
51
  end
52
52
  end
53
53
 
54
54
  describe "Wallet::ttl" do
55
55
  before do
56
- config_yml = "pages:\n show: 5.minute\n index: "
56
+ config_yml = "channels:\n cartoon_network: 5.minute\n current_tv: "
57
57
  @wallet = Wallet.new config_yml
58
58
  end
59
59
 
60
- it "should return 5 minutes for the pages:show ttl" do
61
- @wallet.ttl(:pages, :show).should == 5.minutes.to_i
60
+ it "should return 5 minutes for the channels:cartoon_network ttl" do
61
+ @wallet.ttl(:channels, :cartoon_network).should == 5.minutes.to_i
62
62
  end
63
63
 
64
- it "should return the default ttl for the index action" do
65
- @wallet.ttl(:pages, :index).should == @wallet.default_ttl
64
+ it "should return the default ttl for the current_tv action" do
65
+ @wallet.ttl(:channels, :current_tv).should == @wallet.default_ttl
66
66
  end
67
67
 
68
68
  it "should raise a ActionNotCached error for the dne action" do
69
- proc {@wallet.ttl(:pages, :dne)}.should raise_error(Wallet::ActionNotCached)
69
+ proc {@wallet.ttl(:channels, :dne)}.should raise_error(Wallet::ActionNotCached)
70
70
  end
71
71
  end
72
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wallet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Parker
@@ -79,7 +79,6 @@ test_files:
79
79
  - examples/tv/config/initializers/mime_types.rb
80
80
  - examples/tv/config/initializers/new_rails_defaults.rb
81
81
  - examples/tv/config/initializers/session_store.rb
82
- - examples/tv/config/initializers/wallet.rb
83
82
  - examples/tv/config/routes.rb
84
83
  - examples/tv/lib/wallet.rb
85
84
  - examples/tv/test/performance/browsing_test.rb
@@ -1 +0,0 @@
1
- require 'wallet'