simplify load process

This commit is contained in:
Akira Matsuda 2012-05-21 20:02:37 +09:00
parent 52758797d2
commit c3223aaacd
4 changed files with 32 additions and 89 deletions

View File

@ -1,32 +1,18 @@
module Kaminari
def self.frameworks
frameworks = []
case
when rails? then frameworks << 'rails'
when sinatra? then frameworks << 'sinatra/base'
when grape? then frameworks << 'grape'
end
frameworks
end
end
def self.load_framework!
show_warning if frameworks.empty?
frameworks.each do |framework|
begin
require framework
rescue NameError => e
raise "Failed to load framework #{framework.inspect}. Have you added it to Gemfile?"
end
end
end
# load Rails/Railtie
begin
require 'rails'
rescue LoadError
#do nothing
end
def self.show_warning
$stderr.puts <<-EOC
$stderr.puts <<-EOC if !defined?(Rails) && !defined?(Sinatra) && !defined?(Grape)
warning: no framework detected.
would you check out if your Gemfile appropriately configured?
---- e.g. ----
when Rails:
gem 'rails'
gem 'kaminari'
when Sinatra/Padrino:
@ -35,49 +21,18 @@ when Sinatra/Padrino:
when Grape:
gem 'kaminari', :require => 'kaminari/grape'
EOC
end
EOC
def self.load_kaminari!
require 'kaminari/config'
require 'kaminari/helpers/action_view_extension'
require 'kaminari/helpers/paginator'
require 'kaminari/models/page_scope_methods'
require 'kaminari/models/configuration_methods'
end
# load Kaminari components
require 'kaminari/config'
require 'kaminari/helpers/action_view_extension'
require 'kaminari/helpers/paginator'
require 'kaminari/models/page_scope_methods'
require 'kaminari/models/configuration_methods'
require 'kaminari/hooks'
def self.hook!
load_framework!
load_kaminari!
require 'kaminari/hooks'
if rails?
require 'kaminari/railtie'
require 'kaminari/engine'
elsif sinatra?
require 'kaminari/sinatra'
elsif grape?
require 'kaminari/grape'
else
Kaminari::Hooks.init!
end
end
def self.load!
hook!
end
private
def self.rails?
defined?(::Rails)
end
def self.sinatra?
defined?(::Sinatra)
end
def self.grape?
defined?(::Grape)
end
# if not using Railtie, call `Kaminari::Hooks.init!` directly
if defined? Rails
require 'kaminari/railtie'
require 'kaminari/engine'
end
Kaminari.load!

View File

@ -1,10 +1,4 @@
begin
require 'grape'
rescue LoadError
raise LoadError, "couldn't load `grape`, check out if appropriately bundled grape gem?"
end
require 'grape'
require 'kaminari'
Kaminari::Hooks.init!

View File

@ -6,10 +6,19 @@ module Kaminari
::ActiveRecord::Base.send :include, Kaminari::ActiveRecordExtension
end
begin; require 'data_mapper'; rescue LoadError; end
if defined? ::DataMapper
require 'kaminari/models/data_mapper_extension'
::DataMapper::Collection.send :include, Kaminari::DataMapperExtension::Collection
::DataMapper::Model.append_extensions Kaminari::DataMapperExtension::Model
# ::DataMapper::Model.send :extend, Kaminari::DataMapperExtension::Model
end
begin; require 'mongoid'; rescue LoadError; end
if defined? ::Mongoid
require 'kaminari/models/mongoid_extension'
::Mongoid::Document.send :include, Kaminari::MongoidExtension::Document
::Mongoid::Criteria.send :include, Kaminari::MongoidExtension::Criteria
::Mongoid::Document.send :include, Kaminari::MongoidExtension::Document
end
ActiveSupport.on_load(:mongo_mapper) do
@ -18,13 +27,6 @@ module Kaminari
::Plucky::Query.send :include, Kaminari::PluckyCriteriaMethods
::Plucky::Query.send :include, Kaminari::PageScopeMethods
end
if defined? ::DataMapper
require 'kaminari/models/data_mapper_extension'
::DataMapper::Collection.send :include, Kaminari::DataMapperExtension::Collection
::DataMapper::Model.append_extensions Kaminari::DataMapperExtension::Model
# ::DataMapper::Model.send :extend, Kaminari::DataMapperExtension::Model
end
require 'kaminari/models/array_extension'
ActiveSupport.on_load(:action_view) do

View File

@ -1,13 +1,5 @@
begin
require 'sinatra/base'
rescue LoadError
raise LoadError, "couldn't load `sinatra/base`, check out if appropriately bundled sinatra gem?"
end
require 'sinatra/base'
require 'kaminari'
module Kaminari::Helpers
end
require 'kaminari/helpers/sinatra_helpers'
Kaminari::Hooks.init!