seems_rateable 1.0.13 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +20 -0
  3. data/Gemfile +3 -0
  4. data/README.md +41 -61
  5. data/Rakefile +8 -2
  6. data/app/assets/javascripts/seems_rateable/index.js +1 -0
  7. data/{lib/generators/seems_rateable/install/templates → app/assets/javascripts/seems_rateable}/jRating.js.erb +225 -225
  8. data/app/assets/stylesheets/seems_rateable/{application.css → index.css.erb} +2 -2
  9. data/app/controllers/seems_rateable/application_controller.rb +1 -3
  10. data/app/controllers/seems_rateable/rates_controller.rb +31 -0
  11. data/app/models/seems_rateable/rate.rb +2 -2
  12. data/bin/rails +8 -0
  13. data/config/routes.rb +1 -1
  14. data/lib/generators/seems_rateable/install/install_generator.rb +34 -28
  15. data/lib/generators/seems_rateable/install/templates/initializer.rb +5 -2
  16. data/lib/generators/seems_rateable/install/templates/rateable.js.erb +12 -22
  17. data/lib/generators/seems_rateable/install/templates/rates_migration.rb +6 -9
  18. data/lib/generators/seems_rateable/manifest_finder.rb +25 -0
  19. data/lib/generators/seems_rateable/migration_helpers.rb +21 -0
  20. data/lib/generators/seems_rateable/uninstall/templates/drop_seems_rateable_rates_table.rb +9 -0
  21. data/lib/generators/seems_rateable/uninstall/uninstall_generator.rb +50 -0
  22. data/lib/generators/seems_rateable/uninstall_old/templates/drop_seems_rateable_cached_ratings_table.rb +9 -0
  23. data/lib/generators/seems_rateable/uninstall_old/templates/drop_seems_rateable_rates_table.rb +9 -0
  24. data/lib/generators/seems_rateable/uninstall_old/uninstall_old_generator.rb +48 -0
  25. data/lib/seems_rateable.rb +22 -7
  26. data/lib/seems_rateable/builder.rb +35 -0
  27. data/lib/seems_rateable/builder/html_options.rb +37 -0
  28. data/lib/seems_rateable/configuration.rb +23 -0
  29. data/lib/seems_rateable/engine.rb +12 -7
  30. data/lib/seems_rateable/errors.rb +3 -17
  31. data/lib/seems_rateable/helpers/action_view_extension.rb +18 -0
  32. data/lib/seems_rateable/helpers/current_rater.rb +15 -0
  33. data/lib/seems_rateable/models/active_record_extension.rb +23 -0
  34. data/lib/seems_rateable/models/active_record_extension/rateable.rb +26 -0
  35. data/lib/seems_rateable/models/active_record_extension/rater.rb +11 -0
  36. data/lib/seems_rateable/rating.rb +19 -0
  37. data/lib/seems_rateable/routes.rb +1 -1
  38. data/lib/seems_rateable/version.rb +1 -1
  39. data/seems_rateable.gemspec +32 -0
  40. data/spec/builder_spec.rb +53 -0
  41. data/spec/controllers/rates_controller_spec.rb +56 -0
  42. data/spec/dummy/README.rdoc +28 -0
  43. data/spec/dummy/Rakefile +6 -0
  44. data/{app/assets/javascripts/seems_rateable → spec/dummy/app/assets/javascripts}/application.js +4 -3
  45. data/spec/dummy/app/assets/javascripts/posts.js +2 -0
  46. data/spec/dummy/app/assets/javascripts/rateable/rateable.js.erb +15 -0
  47. data/spec/dummy/app/assets/stylesheets/application.css +19 -0
  48. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  49. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  50. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  51. data/spec/dummy/app/controllers/posts_controller.rb +58 -0
  52. data/spec/dummy/app/models/.keep +0 -0
  53. data/spec/dummy/app/models/concerns/.keep +0 -0
  54. data/spec/dummy/app/models/post.rb +3 -0
  55. data/spec/dummy/app/models/user.rb +5 -0
  56. data/spec/dummy/app/views/layouts/application.html.erb +26 -0
  57. data/spec/dummy/app/views/posts/_form.html.erb +21 -0
  58. data/spec/dummy/app/views/posts/edit.html.erb +6 -0
  59. data/spec/dummy/app/views/posts/index.html.erb +28 -0
  60. data/spec/dummy/app/views/posts/new.html.erb +5 -0
  61. data/spec/dummy/app/views/posts/show.html.erb +9 -0
  62. data/spec/dummy/bin/bundle +3 -0
  63. data/spec/dummy/bin/rails +4 -0
  64. data/spec/dummy/bin/rake +4 -0
  65. data/spec/dummy/config.ru +4 -0
  66. data/spec/dummy/config/application.rb +42 -0
  67. data/spec/dummy/config/boot.rb +5 -0
  68. data/spec/dummy/config/database.yml +25 -0
  69. data/spec/dummy/config/environment.rb +5 -0
  70. data/spec/dummy/config/environments/development.rb +29 -0
  71. data/spec/dummy/config/environments/production.rb +80 -0
  72. data/spec/dummy/config/environments/test.rb +36 -0
  73. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  74. data/spec/dummy/config/initializers/devise.rb +254 -0
  75. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  76. data/spec/dummy/config/initializers/inflections.rb +16 -0
  77. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  78. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  79. data/spec/dummy/config/initializers/seems_rateable.rb +4 -0
  80. data/spec/dummy/config/initializers/session_store.rb +3 -0
  81. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  82. data/spec/dummy/config/locales/devise.en.yml +59 -0
  83. data/spec/dummy/config/locales/en.yml +23 -0
  84. data/spec/dummy/config/routes.rb +8 -0
  85. data/spec/dummy/db/migrate/20140506144141_create_posts.rb +9 -0
  86. data/spec/dummy/db/migrate/20140506144841_devise_create_users.rb +42 -0
  87. data/spec/dummy/db/migrate/20140520170316_create_seems_rateable_rates.rb +15 -0
  88. data/spec/dummy/db/schema.rb +54 -0
  89. data/spec/dummy/lib/assets/.keep +0 -0
  90. data/spec/dummy/public/404.html +58 -0
  91. data/spec/dummy/public/422.html +58 -0
  92. data/spec/dummy/public/500.html +57 -0
  93. data/spec/dummy/public/favicon.ico +0 -0
  94. data/spec/factories/posts.rb +5 -0
  95. data/spec/factories/rate.rb +7 -0
  96. data/spec/factories/users.rb +7 -0
  97. data/spec/features/rating_spec.rb +63 -0
  98. data/spec/helpers/action_view_extension_spec.rb +59 -0
  99. data/spec/models/active_record_extension_spec.rb +105 -0
  100. data/spec/models/rate_spec.rb +6 -0
  101. data/spec/rating_spec.rb +70 -0
  102. data/spec/spec_helper.rb +45 -0
  103. data/spec/support/dummies.rb +19 -0
  104. metadata +263 -25
  105. data/app/controllers/seems_rateable/ratings_controller.rb +0 -13
  106. data/app/models/seems_rateable/cached_rating.rb +0 -5
  107. data/lib/generators/seems_rateable/install/templates/cached_ratings_migration.rb +0 -17
  108. data/lib/seems_rateable/helpers.rb +0 -27
  109. data/lib/seems_rateable/model.rb +0 -91
@@ -47,11 +47,11 @@
47
47
  p.jRatingInfos {
48
48
  position: absolute;
49
49
  z-index:9999;
50
- background: transparent url('bg_jRatingInfos.png') no-repeat;
50
+ background: transparent url(<%= asset_path 'seems_rateable/bg_jRatingInfos.png' %>) no-repeat;
51
51
  color: #CACACA;
52
52
  display: none;
53
53
  width: 91px;
54
- height: 29px;
54
+ height: 29px;
55
55
  font-size:16px;
56
56
  text-align:center;
57
57
  padding-top:5px;
@@ -1,7 +1,5 @@
1
1
  module SeemsRateable
2
2
  class ApplicationController < ::ApplicationController
3
- rescue_from SeemsRateable::Errors::AlreadyRatedError do |exception|
4
- render :json => {:error => true}
5
- end
3
+ protect_from_forgery with: :exception
6
4
  end
7
5
  end
@@ -0,0 +1,31 @@
1
+ require_dependency "application_controller"
2
+
3
+ module SeemsRateable
4
+ class RatesController < ApplicationController
5
+ before_filter :require_login
6
+
7
+ def create
8
+ @rate = Rate.create! rate_params
9
+
10
+ render json: { average: rating.average }
11
+ end
12
+
13
+ private
14
+
15
+ def rateable
16
+ @rate.rateable
17
+ end
18
+
19
+ def rating
20
+ rateable.rating(@rate.dimension)
21
+ end
22
+
23
+ def rate_params
24
+ params.require(:rate).permit!.merge(rater_id: current_rater.id)
25
+ end
26
+
27
+ def require_login
28
+ raise SeemsRateable::Errors::NoCurrentRaterError unless current_rater
29
+ end
30
+ end
31
+ end
@@ -1,6 +1,6 @@
1
1
  module SeemsRateable
2
2
  class Rate < ActiveRecord::Base
3
- belongs_to :rater, :class_name => SeemsRateable::Engine.config.owner_class
4
- belongs_to :rateable, :polymorphic => true
3
+ belongs_to :rater, class_name: SeemsRateable.config.rate_owner_class
4
+ belongs_to :rateable, polymorphic: true
5
5
  end
6
6
  end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby1.9.1
2
+ # This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/seems_rateable/engine', __FILE__)
6
+
7
+ require 'rails/all'
8
+ require 'rails/engine/commands'
@@ -1,3 +1,3 @@
1
1
  SeemsRateable::Engine.routes.draw do
2
- resources :ratings, :only => :create
2
+ resources :rates, only: :create
3
3
  end
@@ -1,41 +1,47 @@
1
- require 'rails/generators/migration'
1
+ require 'generators/seems_rateable/migration_helpers'
2
+ require 'generators/seems_rateable/manifest_finder'
2
3
  require 'fileutils'
3
4
 
4
5
  module SeemsRateable
5
6
  module Generators
6
7
  class InstallGenerator < ::Rails::Generators::Base
7
- include Rails::Generators::Migration
8
+ include SeemsRateable::Generators::MigrationHelpers
9
+ include SeemsRateable::Generators::ManifestFinder
10
+
8
11
  source_root File.expand_path('../templates', __FILE__)
9
-
10
- def self.next_migration_number(path)
11
- unless @prev_migration_nr
12
- @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
13
- else
14
- @prev_migration_nr += 1
15
- end
16
- @prev_migration_nr.to_s
12
+
13
+ def routes
14
+ route 'seems_rateable'
17
15
  end
18
-
19
- def routegen
20
- route("seems_rateable")
16
+
17
+ def javascript_assets
18
+ Dir.mkdir 'app/assets/javascripts/rateable' unless File.directory?('app/assets/javascripts/rateable')
19
+
20
+ copy_file 'rateable.js.erb', 'app/assets/javascripts/rateable/rateable.js.erb'
21
21
  end
22
-
23
- desc "generating migration files"
24
- def copy_migrations
25
- migration_template "rates_migration.rb", "db/migrate/create_seems_rateable_rates.rb"
26
- migration_template "cached_ratings_migration.rb", "db/migrate/create_seems_rateable_cached_ratings.rb"
22
+
23
+ def migrations
24
+ migration_template 'rates_migration.rb', 'db/migrate/create_seems_rateable_rates.rb'
27
25
  end
28
-
29
- desc "generating initializer"
30
- def copy_initializer
31
- template "initializer.rb", "config/initializers/seems_rateable.rb"
26
+
27
+ def initializer
28
+ template 'initializer.rb', 'config/initializers/seems_rateable.rb'
32
29
  end
33
-
34
- desc "generating javascript files"
35
- def copy_javascript_asset
36
- Dir.mkdir "app/assets/javascripts/rateable" unless File.directory?("app/assets/javascripts/rateable")
37
- copy_file "rateable.js.erb", "app/assets/javascripts/rateable/rateable.js.erb" unless File.exists?("app/assets/javascripts/rateable/rateable.js.erb")
38
- copy_file "jRating.js.erb", "app/assets/javascripts/rateable/jRating.js.erb" unless File.exists?("app/assets/javascripts/rateable/jRating.js.erb")
30
+
31
+ def require_stylesheet
32
+ if File.binread(detect_css[0]).include? "require_self"
33
+ insert_into_file detect_css[0], "\n#{detect_css[1]} require seems_rateable\n", after: /require_self/
34
+ else
35
+ prepend_to_file detect_css[0], "/*\n#{detect_css[1]} require seems_rateable\n*/\n"
36
+ end
37
+ end
38
+
39
+ def require_javascript
40
+ if File.binread(detect_js[0]).include? "require_tree"
41
+ insert_into_file detect_js[0], "\n#{detect_js[1]} require seems_rateable\n#{detect_js[1]} require_directory ./rateable\n", after: /require_tree/
42
+ else
43
+ prepend_to_file detect_js[0], "\n#{detect_js[1]} require seems_rateable\n #{detect_js[1]} require_directory ./rateable\n"
44
+ end
39
45
  end
40
46
  end
41
47
  end
@@ -1,4 +1,7 @@
1
1
  #SeemsRateable engine Initializer
2
2
 
3
- #Configure owner class of the given ratings
4
- SeemsRateable::Engine.config.owner_class = "User"
3
+ SeemsRateable.configure do |config|
4
+ #config.rate_owner_class = 'User'
5
+ #config.current_rater_method = :current_user
6
+ #config.default_selector_class = 'rateable'
7
+ end
@@ -1,25 +1,15 @@
1
1
  $(document).ready(function(){
2
- $(".rateable").jRating({
3
- //default options displayed below ->
4
-
5
- rateMax: 5, //Maximal rate
6
- length : 5, //Number of stars
7
- //decimalLength : 0, //Number of decimals in the rate
8
- //type : 'big', //Big or small
9
- //step : true, //If set to true, filling of the stars is done star by star (step by step).
10
- //isDisabled: false, //Set true to display static rating
11
- //showRateInfo:false, //Rate info panel, set true to display
12
- //rateInfosX : 45, //In pixel - Absolute left position of the information box during mousemove.
13
- //rateInfosY : 5, //In pixel - Absolute top position of the information box during mousemove.
14
- path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>',
15
- onSuccess : function(element, rate){
16
- //something like ->
17
- //alert('success');
18
- $('<span class="text-success"><small style="display:inline-block;">Thanks for rating!</small></span>').insertAfter(element)
19
- },
20
- onError : function(element, rate) {
21
- $('<span class="text-error"><small style="display:inline-block;">You have already rated!</small></span>').insertAfter(element)
22
- }
23
- });
2
+ $(".rateable").jRating({
3
+ //default options displayed below ->
24
4
 
5
+ rateMax: 5, //Maximal rate
6
+ length : 5, //Number of stars
7
+ //decimalLength : 0, //Number of decimals in the rate
8
+ //type : 'big', //Big or small
9
+ //step : true, //If set to true, filling of the stars is done star by star (step by step).
10
+ //isDisabled: false, //Set true to display static rating
11
+ //showRateInfo: false //Rate info panel, set true to display
12
+ //rateInfosX : 45, //In pixel - Absolute left position of the information box during mousemove.
13
+ //rateInfosY : 5, //In pixel - Absolute top position of the information box during mousemove.
14
+ });
25
15
  });
@@ -1,18 +1,15 @@
1
1
  class CreateSeemsRateableRates < ActiveRecord::Migration
2
- def self.up
2
+ def change
3
3
  create_table :seems_rateable_rates do |t|
4
4
  t.belongs_to :rater
5
- t.belongs_to :rateable, :polymorphic => true
6
- t.float :stars, :null => false
7
- t.integer :rater_id, :limit => 8
8
- t.integer :rateable_id
9
- t.string :rateable_type
5
+ t.belongs_to :rateable, polymorphic: true
6
+ t.float :stars, null: false
10
7
  t.string :dimension
11
8
  t.timestamps
12
9
  end
13
- end
14
10
 
15
- def self.down
16
- drop_table :rates
11
+ add_index :seems_rateable_rates, :rater_id
12
+ add_index :seems_rateable_rates, [:rateable_id, :rateable_type]
13
+ add_index :seems_rateable_rates, :dimension
17
14
  end
18
15
  end
@@ -0,0 +1,25 @@
1
+ module SeemsRateable
2
+ module Generators
3
+ module ManifestFinder
4
+ private
5
+
6
+ def detect_css
7
+ manifest = 'app/assets/stylesheets/application'
8
+
9
+ return [manifest + '.css', ' *='] if File.exist?(manifest + '.css')
10
+ return [manifest + '.css.sass', ' //='] if File.exist?(manifest + '.css.sass')
11
+ return [manifest + '.sass', ' //='] if File.exist?(manifest + '.sass')
12
+ return [manifest + '.css.scss', ' //='] if File.exist?(manifest + '.css.scss')
13
+ return [manifest + '.scss', ' //='] if File.exist?(manifest + '.scss')
14
+ end
15
+
16
+ def detect_js
17
+ manifest = 'app/assets/javascripts/application'
18
+
19
+ return [manifest + '.coffee', '//='] if File.exist?(manifest + '.coffee')
20
+ return [manifest + '.js.coffee', '//='] if File.exist?(manifest + '.js.coffee')
21
+ return [manifest + '.js', '//='] if File.exist?(manifest + '.js')
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require 'rails/generators/migration'
2
+
3
+ module SeemsRateable
4
+ module Generators
5
+ module MigrationHelpers
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ include ::Rails::Generators::Migration
10
+
11
+ def self.next_migration_number(dirname)
12
+ if ActiveRecord::Base.timestamped_migrations
13
+ Time.now.utc.strftime("%Y%m%d%H%M%S%6N")
14
+ else
15
+ "%.3d" % (current_migration_number(dirname) + 1)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ class DropSeemsRateableRatesTable < ActiveRecord::Migration
2
+ def self.up
3
+ drop_table :seems_rateable_rates
4
+ end
5
+
6
+ def self.down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,50 @@
1
+ require 'generators/seems_rateable/migration_helpers'
2
+ require 'generators/seems_rateable/manifest_finder'
3
+
4
+ module SeemsRateable
5
+ module Generators
6
+ class UninstallGenerator < ::Rails::Generators::Base
7
+ include SeemsRateable::Generators::MigrationHelpers
8
+ include SeemsRateable::Generators::ManifestFinder
9
+
10
+ source_root File.expand_path('../templates', __FILE__)
11
+
12
+ def comment_route
13
+ comment_lines 'config/routes.rb', /seems_rateable/
14
+ end
15
+
16
+ def remove_initializer
17
+ remove_file 'config/initializers/seems_rateable.rb'
18
+ end
19
+
20
+ def remove_javascripts
21
+ remove_dir 'app/assets/javascripts/rateable/'
22
+ end
23
+
24
+ def drop_table
25
+ migration_template 'drop_seems_rateable_rates_table.rb', 'db/migrate/drop_seems_rateable_rates_table.rb'
26
+
27
+ rake 'db:migrate' if yes?('Run rake db:migrate?')
28
+
29
+ Dir.glob('db/migrate/*').keep_if { |f| f.include?('seems') }.each do |file|
30
+ remove_file(file)
31
+ end if yes?('Remove also remaining seems_rateable migration files?')
32
+ end
33
+
34
+ def remove_require_from_stylesheet
35
+ gsub_file detect_css[0], /require seems_rateable/, ''
36
+ end
37
+
38
+ def remove_require_from_javascript
39
+ gsub_file detect_js[0], /require seems_rateable/, ''
40
+ gsub_file detect_js[0], /require_directory .\/rateable/, ''
41
+ end
42
+
43
+ def comment_seems_rateable_in_models
44
+ Dir.glob('app/models/*').keep_if { |f| File.extname(f) == '.rb' }.each do |model|
45
+ comment_lines model, /seems_rateable/ if File.binread(model).include? 'seems_rateable'
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,9 @@
1
+ class DropSeemsRateableCachedRatingsTable < ActiveRecord::Migration
2
+ def self.up
3
+ drop_table :seems_rateable_cached_ratings
4
+ end
5
+
6
+ def self.down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class DropSeemsRateableRatesTable < ActiveRecord::Migration
2
+ def self.up
3
+ drop_table :seems_rateable_rates
4
+ end
5
+
6
+ def self.down
7
+ raise ActiveRecord::IrreversibleMigration
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ require 'generators/seems_rateable/migration_helpers'
2
+
3
+ module SeemsRateable
4
+ module Generators
5
+ class UninstallOld < ::Rails::Generators::Base
6
+ include SeemsRateable::Generators::MigrationHelpers
7
+
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ def drop_tables
11
+ (ActiveRecord::Migration.tables & %w[seems_rateable_rates seems_rateable_cached_ratings]).each do |table|
12
+ migration_template "drop_#{table}_table.rb", "db/migrate/drop_#{table}_table"
13
+ end
14
+
15
+ rake 'db:migrate' if yes?('Run rake db:migrate? To drop seems_rateable tables')
16
+
17
+ Dir.glob('db/migrate/*').keep_if { |f| f.include?('seems_rateable') }.each do |file|
18
+ remove_file(file)
19
+ end if yes?('Remove also remaining seems_rateable migration files?')
20
+ end
21
+
22
+ def remove_initializer
23
+ remove_file 'config/initializers/seems_rateable.rb'
24
+ end
25
+
26
+ def remove_javascripts
27
+ remove_dir 'app/assets/javascripts/rateable/'
28
+ end
29
+
30
+ def remove_stylesheet_include_in_template
31
+ %w[erb haml slim].each do |extension|
32
+
33
+ file = 'app/views/layouts/application.html.' + extension
34
+
35
+ if File.exists?(file)
36
+ gsub_file file, /seems_rateable_stylesheet/, ''
37
+ end
38
+ end
39
+ end
40
+
41
+ def comment_seems_rateable_in_models
42
+ Dir.glob('app/models/*').keep_if { |f| File.extname(f) == '.rb' }.each do |model|
43
+ comment_lines model, /seems_rateable/
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -3,14 +3,29 @@ begin
3
3
  rescue LoadError
4
4
  end
5
5
 
6
- require "jquery-rails"
6
+ require 'seems_rateable/engine'
7
+ require 'seems_rateable/configuration'
7
8
 
8
- require "seems_rateable/engine"
9
- require "seems_rateable/errors"
10
- require "seems_rateable/helpers"
11
- require "seems_rateable/model"
12
- require "seems_rateable/routes"
13
- require "seems_rateable/version"
9
+ require 'jquery-rails'
14
10
 
15
11
  module SeemsRateable
12
+ autoload :Errors, 'seems_rateable/errors'
13
+ autoload :Builder, 'seems_rateable/builder'
14
+ autoload :Routes, 'seems_rateable/routes'
15
+ autoload :Rating, 'seems_rateable/rating'
16
+
17
+ module Helpers
18
+ autoload :ActionViewExtension, 'seems_rateable/helpers/action_view_extension'
19
+ autoload :HtmlOptions, 'seems_rateable/helpers/html_options'
20
+ autoload :CurrentRater, 'seems_rateable/helpers/current_rater'
21
+ end
22
+
23
+ module Models
24
+ autoload :ActiveRecordExtension, 'seems_rateable/models/active_record_extension'
25
+
26
+ module ActiveRecordExtension
27
+ autoload :Rateable, 'seems_rateable/models/active_record_extension/rateable'
28
+ autoload :Rater, 'seems_rateable/models/active_record_extension/rater'
29
+ end
30
+ end
16
31
  end