diff --git a/lib/kaminari/config.rb b/lib/kaminari/config.rb new file mode 100644 index 0000000..f9eb6a4 --- /dev/null +++ b/lib/kaminari/config.rb @@ -0,0 +1,27 @@ +require 'active_support/configurable' + +module Kaminari + # Configures global settings for Kaminari + # Kaminari.configure do |config| + # config.default_per_page = 10 + # end + def self.configure(&block) + yield @config ||= Kaminari::Configuration.new + end + + # Global settings for Kaminari + def self.config + @config + end + + # need a Class for 3.0 + class Configuration #:nodoc: + include ActiveSupport::Configurable + config_accessor :default_per_page + end + + # this is ugly. why can't we pass the default value to config_accessor...? + configure do |config| + config.default_per_page = 25 + end +end diff --git a/lib/kaminari/models/configuration_methods.rb b/lib/kaminari/models/configuration_methods.rb index 53a0e85..bdd7db2 100644 --- a/lib/kaminari/models/configuration_methods.rb +++ b/lib/kaminari/models/configuration_methods.rb @@ -13,7 +13,7 @@ module Kaminari # This model's default per_page value # returns 25 unless explicitly overridden via paginates_per def default_per_page - @_default_per_page || Kaminari::DEFAULT_PER_PAGE + @_default_per_page || Kaminari.config.default_per_page end end end diff --git a/lib/kaminari/railtie.rb b/lib/kaminari/railtie.rb index e0d7c6e..107e20f 100644 --- a/lib/kaminari/railtie.rb +++ b/lib/kaminari/railtie.rb @@ -2,13 +2,13 @@ require 'rails' # ensure ORMs are loaded *before* initializing Kaminari begin; require 'mongoid'; rescue LoadError; end +require File.join(File.dirname(__FILE__), 'config') require File.join(File.dirname(__FILE__), 'helpers/action_view_extension') require File.join(File.dirname(__FILE__), 'helpers/paginator') require File.join(File.dirname(__FILE__), 'models/page_scope_methods') require File.join(File.dirname(__FILE__), 'models/configuration_methods') module Kaminari - DEFAULT_PER_PAGE = 25 unless defined? ::Kaminari::DEFAULT_PER_PAGE class Railtie < ::Rails::Railtie #:nodoc: initializer 'kaminari' do |app| ActiveSupport.on_load(:active_record) do diff --git a/spec/config/config_spec.rb b/spec/config/config_spec.rb new file mode 100644 index 0000000..04eb6b6 --- /dev/null +++ b/spec/config/config_spec.rb @@ -0,0 +1,19 @@ +require File.expand_path('../spec_helper', File.dirname(__FILE__)) + +describe Kaminari::Configuration do + subject { Kaminari.config } + describe 'default_per_page' do + context 'by default' do + its(:default_per_page) { should == 25 } + end + context 'configured via config block' do + before do + Kaminari.configure {|c| c.default_per_page = 17} + end + its(:default_per_page) { should == 17 } + after do + Kaminari.configure {|c| c.default_per_page = 25} + end + end + end +end