auctify 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +229 -0
  4. data/Rakefile +34 -0
  5. data/app/assets/config/auctify_manifest.js +1 -0
  6. data/app/assets/javascripts/folio/console/main_app.coffee +1 -0
  7. data/app/assets/stylesheets/auctify/application.css +15 -0
  8. data/app/assets/stylesheets/auctify/bidder_registrations.css +4 -0
  9. data/app/assets/stylesheets/auctify/bids.css +4 -0
  10. data/app/assets/stylesheets/auctify/sales.css +4 -0
  11. data/app/assets/stylesheets/auctify/sales_packs.css +4 -0
  12. data/app/assets/stylesheets/folio/console/_main_app.sass +1 -0
  13. data/app/assets/stylesheets/scaffold.css +80 -0
  14. data/app/cells/folio/console/atoms/previews/main_app.coffee +1 -0
  15. data/app/concerns/auctify/behavior/base.rb +20 -0
  16. data/app/concerns/auctify/behavior/buyer.rb +16 -0
  17. data/app/concerns/auctify/behavior/item.rb +27 -0
  18. data/app/concerns/auctify/behavior/seller.rb +36 -0
  19. data/app/concerns/auctify/sale/auction_callbacks.rb +44 -0
  20. data/app/controllers/auctify/api/v1/auctions_controller.rb +61 -0
  21. data/app/controllers/auctify/api/v1/base_controller.rb +22 -0
  22. data/app/controllers/auctify/api/v1/console/bids_controller.rb +37 -0
  23. data/app/controllers/auctify/application_controller.rb +8 -0
  24. data/app/controllers/auctify/bidder_registrations_controller.rb +65 -0
  25. data/app/controllers/auctify/bids_controller.rb +64 -0
  26. data/app/controllers/auctify/sales_controller.rb +75 -0
  27. data/app/controllers/auctify/sales_packs_controller.rb +75 -0
  28. data/app/helpers/auctify/application_helper.rb +10 -0
  29. data/app/helpers/auctify/bidder_registrations_helper.rb +6 -0
  30. data/app/helpers/auctify/bids_helper.rb +6 -0
  31. data/app/helpers/auctify/sales_helper.rb +15 -0
  32. data/app/helpers/auctify/sales_packs_helper.rb +6 -0
  33. data/app/jobs/auctify/application_job.rb +6 -0
  34. data/app/jobs/auctify/bidding_closer_job.rb +23 -0
  35. data/app/jobs/auctify/bidding_is_close_to_end_notifier_job.rb +29 -0
  36. data/app/mailers/auctify/application_mailer.rb +8 -0
  37. data/app/models/auctify/application_record.rb +14 -0
  38. data/app/models/auctify/behaviors.rb +27 -0
  39. data/app/models/auctify/bid.rb +72 -0
  40. data/app/models/auctify/bidder_registration.rb +84 -0
  41. data/app/models/auctify/sale/auction.rb +404 -0
  42. data/app/models/auctify/sale/base.rb +210 -0
  43. data/app/models/auctify/sale/retail.rb +97 -0
  44. data/app/models/auctify/sales_pack.rb +101 -0
  45. data/app/serializers/auctify/sale/auction_serializer.rb +46 -0
  46. data/app/services/auctify/bids_appender.rb +241 -0
  47. data/app/services/auctify/service_base.rb +78 -0
  48. data/app/types/auctify/minimal_bids_ladder_type.rb +77 -0
  49. data/app/views/auctify/api/v1/console/bids/index.html.erb +1 -0
  50. data/app/views/auctify/api/v1/console/bids/show.html.erb +1 -0
  51. data/app/views/auctify/bidder_registrations/_form.html.erb +27 -0
  52. data/app/views/auctify/bidder_registrations/edit.html.erb +6 -0
  53. data/app/views/auctify/bidder_registrations/index.html.erb +33 -0
  54. data/app/views/auctify/bidder_registrations/new.html.erb +5 -0
  55. data/app/views/auctify/bidder_registrations/show.html.erb +24 -0
  56. data/app/views/auctify/bids/_form.html.erb +32 -0
  57. data/app/views/auctify/bids/edit.html.erb +6 -0
  58. data/app/views/auctify/bids/index.html.erb +31 -0
  59. data/app/views/auctify/bids/new.html.erb +5 -0
  60. data/app/views/auctify/bids/show.html.erb +19 -0
  61. data/app/views/auctify/sales/_form.html.erb +32 -0
  62. data/app/views/auctify/sales/edit.html.erb +6 -0
  63. data/app/views/auctify/sales/index.html.erb +36 -0
  64. data/app/views/auctify/sales/new.html.erb +5 -0
  65. data/app/views/auctify/sales/show.html.erb +19 -0
  66. data/app/views/auctify/sales_packs/_form.html.erb +57 -0
  67. data/app/views/auctify/sales_packs/edit.html.erb +6 -0
  68. data/app/views/auctify/sales_packs/index.html.erb +40 -0
  69. data/app/views/auctify/sales_packs/new.html.erb +5 -0
  70. data/app/views/auctify/sales_packs/show.html.erb +44 -0
  71. data/app/views/layouts/auctify/application.html.erb +15 -0
  72. data/config/locales/auctify.cs.yml +121 -0
  73. data/config/locales/default.cs.yml +220 -0
  74. data/config/locales/default.en.yml +215 -0
  75. data/config/routes.rb +23 -0
  76. data/db/migrate/20210212163000_create_auctify_sales.rb +16 -0
  77. data/db/migrate/20210216151350_add_type_to_auctify_sales.rb +7 -0
  78. data/db/migrate/20210217101246_add_state_to_auctify_sales.rb +7 -0
  79. data/db/migrate/20210217110819_add_prices_to_auctify_sales.rb +9 -0
  80. data/db/migrate/20210222103031_add_published_at_to_auctify_sale.rb +7 -0
  81. data/db/migrate/20210223090240_create_auctify_bidder_registrations.rb +15 -0
  82. data/db/migrate/20210223152139_create_auctify_bids.rb +13 -0
  83. data/db/migrate/20210225103227_add_bid_steps_ladder_to_auctify_sales.rb +7 -0
  84. data/db/migrate/20210412114319_add_reserve_price_to_auctify_sales.rb +7 -0
  85. data/db/migrate/20210416140603_create_auctify_sales_packs.rb +17 -0
  86. data/db/migrate/20210416141111_add_pack_reference_to_auctify_sales.rb +7 -0
  87. data/db/migrate/20210419075003_add_ends_at_to_auctify_sales.rb +7 -0
  88. data/db/migrate/20210419082800_add_position_to_auctify_sales.rb +8 -0
  89. data/db/migrate/20210419083321_add_indexes.rb +12 -0
  90. data/db/migrate/20210421093652_add_number_to_auctify_sales.rb +7 -0
  91. data/db/migrate/20210423071326_removing_polymorphic_assoc_sale_to_item.rb +7 -0
  92. data/db/migrate/20210423071534_add_currently_ends_at_to_auctify_sales.rb +7 -0
  93. data/db/migrate/20210427121353_change_column_published_on_auctify_sale.rb +15 -0
  94. data/db/migrate/20210427122315_add_featured_to_auctify_sales.rb +7 -0
  95. data/db/migrate/20210428045651_add_sales_bool_indices.rb +9 -0
  96. data/db/migrate/20210428064615_allow_seller_to_be_nil.rb +13 -0
  97. data/db/migrate/20210429051508_add_sales_pack_start_and_end.rb +15 -0
  98. data/db/migrate/20210430080419_add_sales_slug.rb +11 -0
  99. data/db/migrate/20210503095704_add_cancelled_to_auctify_bids.rb +7 -0
  100. data/db/migrate/20210504072041_add_commission_and_contract_to_auctify_sales.rb +8 -0
  101. data/db/migrate/20210506064100_add_winner_to_auctify_sales.rb +7 -0
  102. data/db/migrate/20210506072438_add_bids_count_to_auctify_sales.rb +7 -0
  103. data/db/migrate/20210507085845_rename_bids_count_to_applied_bids_count.rb +7 -0
  104. data/db/migrate/20210510063146_add_dont_confirm_bids_to_registrations.rb +7 -0
  105. data/db/migrate/20210511081556_add_index_on_cancelled_on.rb +7 -0
  106. data/db/migrate/20210512162942_add_sold_at_to_auctify_sales.rb +7 -0
  107. data/db/migrate/20210607113440_add_commission_in_percent_to_sales_packs.rb +7 -0
  108. data/db/migrate/20210617062509_add_index_to_auctify_sales_currently_ends_at.rb +7 -0
  109. data/db/migrate/20210625125732_add_current_winner_to_auctify_sales.rb +7 -0
  110. data/lib/auctify.rb +7 -0
  111. data/lib/auctify/configuration.rb +43 -0
  112. data/lib/auctify/engine.rb +25 -0
  113. data/lib/auctify/version.rb +5 -0
  114. data/lib/tasks/auctify_tasks.rake +23 -0
  115. metadata +442 -0
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateAuctifySales < ActiveRecord::Migration[6.0]
4
+ # rubocop:disable Layout/LineLength
5
+ # cool! Generated by `bin/rails generate scaffold sale seller:references{polymorphic}, buyer:references{polymorphic}, item:references{polymorphic}`
6
+ # rubocop:enable Layout/LineLength
7
+ def change
8
+ create_table :auctify_sales do |t|
9
+ t.references :seller, polymorphic: true, null: false
10
+ t.references :buyer, polymorphic: true, null: true
11
+ t.references :item, polymorphic: true, null: false
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddTypeToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :type, :string, default: "Auctify::Sale::Base", index: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddStateToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :aasm_state, :string, default: "offered", null: false, index: true
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddPricesToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :offered_price, :decimal, precision: 12, scale: 2
6
+ add_column :auctify_sales, :current_price, :decimal, precision: 12, scale: 2
7
+ add_column :auctify_sales, :sold_price, :decimal, precision: 12, scale: 2
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddPublishedAtToAuctifySale < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :published_at, :datetime
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateAuctifyBidderRegistrations < ActiveRecord::Migration[6.0]
4
+ def change
5
+ create_table :auctify_bidder_registrations do |t|
6
+ t.references :bidder, polymorphic: true, null: false,
7
+ index: { name: "index_auctify_bidder_registrations_on_bidder" }
8
+ t.references :auction, null: false, foreign_key: { to_table: "auctify_sales" }
9
+ t.string :aasm_state, null: false, default: "pending", index: true
10
+ t.datetime :handled_at
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateAuctifyBids < ActiveRecord::Migration[6.0]
4
+ def change
5
+ create_table :auctify_bids do |t|
6
+ t.references :registration, null: false, foreign_key: { to_table: "auctify_bidder_registrations" }
7
+ t.decimal :price, null: false, precision: 12, scale: 2
8
+ t.decimal :max_price, null: true, precision: 12, scale: 2
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddBidStepsLadderToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :bid_steps_ladder, :jsonb, null: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddReservePriceToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :reserve_price, :decimal, null: true
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateAuctifySalesPacks < ActiveRecord::Migration[6.0]
4
+ def change
5
+ create_table :auctify_sales_packs do |t|
6
+ t.string :title
7
+ t.text :description
8
+ t.integer :position, default: 0
9
+ t.string :slug
10
+ t.string :time_frame
11
+ t.string :place
12
+ t.boolean :published, default: false
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddPackReferenceToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_reference :auctify_sales, :pack, references: :auctify_sales_packs, index: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddEndsAtToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :ends_at, :datetime, null: true
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddPositionToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :position, :integer
6
+ add_column :auctify_sales_packs, :sales_count, :integer, default: 0
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddIndexes < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_index :auctify_sales, :published_at
6
+ add_index :auctify_sales, :position
7
+
8
+ add_index :auctify_sales_packs, :position
9
+ add_index :auctify_sales_packs, :slug
10
+ add_index :auctify_sales_packs, :published
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddNumberToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :number, :string
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemovingPolymorphicAssocSaleToItem < ActiveRecord::Migration[6.0]
4
+ def change
5
+ remove_column :auctify_sales, :item_type, :string
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCurrentlyEndsAtToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :currently_ends_at, :datetime, index: true
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ChangeColumnPublishedOnAuctifySale < ActiveRecord::Migration[6.0]
4
+ def up
5
+ add_column :auctify_sales, :published, :boolean, default: false, index: true
6
+ execute("UPDATE auctify_sales set published = TRUE where published_at IS NOT NULL;")
7
+ remove_column :auctify_sales, :published_at
8
+ end
9
+
10
+ def down
11
+ add_column :auctify_sales, :published_at, :datetime
12
+ execute("UPDATE auctify_sales set published_at = NOW() WHERE published = TRUE ;")
13
+ remove_column :auctify_sales, :published
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddFeaturedToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :featured, :boolean, index: true
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddSalesBoolIndices < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_index :auctify_sales, :published
6
+ add_index :auctify_sales, :featured
7
+ change_column_default :auctify_sales, :featured, false
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AllowSellerToBeNil < ActiveRecord::Migration[6.0]
4
+ def up
5
+ change_column :auctify_sales, :seller_id, :integer, null: true
6
+ change_column :auctify_sales, :seller_type, :string, null: true
7
+ end
8
+
9
+ def down
10
+ change_column :auctify_sales, :seller_id, :integer, null: false
11
+ change_column :auctify_sales, :seller_type, :string, null: false
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddSalesPackStartAndEnd < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales_packs, :start_date, :date
6
+ add_column :auctify_sales_packs, :end_date, :date
7
+
8
+ add_column :auctify_sales_packs, :sales_interval, :integer, default: 3
9
+
10
+ add_column :auctify_sales_packs, :sales_beginning_hour, :integer, default: 20
11
+ add_column :auctify_sales_packs, :sales_beginning_minutes, :integer, default: 0
12
+
13
+ remove_column :auctify_sales_packs, :time_frame, :string
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddSalesSlug < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :slug, :string
6
+ add_index :auctify_sales, :slug, unique: true
7
+
8
+ remove_index :auctify_sales_packs, :slug
9
+ add_index :auctify_sales_packs, :slug, unique: true
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCancelledToAuctifyBids < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_bids, :cancelled, :boolean, default: false, index: true
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCommissionAndContractToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :contract_number, :string
6
+ add_column :auctify_sales, :commission_in_percent, :integer
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddWinnerToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_reference :auctify_sales, :winner, polymorphic: true, null: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddBidsCountToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :bids_count, :integer, default: 0
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameBidsCountToAppliedBidsCount < ActiveRecord::Migration[6.0]
4
+ def change
5
+ rename_column :auctify_sales, :bids_count, :applied_bids_count
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddDontConfirmBidsToRegistrations < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_bidder_registrations, :dont_confirm_bids, :boolean, default: false
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddIndexOnCancelledOn < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_index :auctify_bids, :cancelled
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddSoldAtToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales, :sold_at, :datetime, default: nil, null: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCommissionInPercentToSalesPacks < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :auctify_sales_packs, :commission_in_percent, :integer
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddIndexToAuctifySalesCurrentlyEndsAt < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_index :auctify_sales, :currently_ends_at
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddCurrentWinnerToAuctifySales < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_reference :auctify_sales, :current_winner, polymorphic: true, null: true, index: false
6
+ end
7
+ end
data/lib/auctify.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "auctify/engine"
4
+ require "auctify/configuration"
5
+
6
+ module Auctify
7
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Auctify
4
+ class Configuration
5
+ attr_accessor :autoregister_as_bidders_all_instances_of_classes,
6
+ :auction_prolonging_limit,
7
+ :auctioneer_commission_in_percent,
8
+ :autofinish_auction_after_bidding,
9
+ :when_to_notify_bidders_before_end_of_bidding,
10
+ :default_bid_steps_ladder,
11
+ :restrict_overbidding_yourself_to_max_price_increasing
12
+
13
+
14
+ def initialize
15
+ # set defaults here
16
+ @autoregister_as_bidders_all_instances_of_classes = []
17
+ @auction_prolonging_limit = 2.minutes
18
+ @auctioneer_commission_in_percent = 1 # %
19
+ @autofinish_auction_after_bidding = false
20
+ @when_to_notify_bidders_before_end_of_bidding = nil # no notifying
21
+ @default_bid_steps_ladder = { 0.. => 1 }
22
+ @restrict_overbidding_yourself_to_max_price_increasing = true
23
+ end
24
+
25
+ def autoregistering_for?(instance)
26
+ return false if instance.blank?
27
+
28
+ autoregister_as_bidders_all_instances_of_classes.include?(instance.class.name)
29
+ end
30
+ end
31
+
32
+
33
+ def self.configuration
34
+ @configuration ||= Auctify::Configuration.new
35
+ end
36
+
37
+ def self.configure
38
+ yield(configuration)
39
+
40
+ class_names = configuration.autoregister_as_bidders_all_instances_of_classes.collect { |klass| klass.is_a?(String) ? klass : klass.name }
41
+ configuration.autoregister_as_bidders_all_instances_of_classes = class_names.sort
42
+ end
43
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aasm"
4
+ require_relative "../../app/models/auctify/behaviors"
5
+
6
+ module Auctify
7
+ class Engine < ::Rails::Engine
8
+ # we choose not to use this `isolate_namespace Auctify`
9
+ # there was problem with routes when using it from main app,
10
+ # (`url_for(Auctify::SalesPack)` => `NoMethodError: sales_pack_url`)
11
+
12
+ initializer :append_migrations do |app|
13
+ unless app.root.to_s.include? root.to_s
14
+ config.paths["db/migrate"].expanded.each do |expanded_path|
15
+ app.config.paths["db/migrate"] << expanded_path
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ # trick borrowed from Devise
23
+ ActiveSupport.on_load(:active_record) do
24
+ extend Auctify::Behaviors
25
+ end