Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem Monkey Patching Rails 7.0 #1092

Open
deivinsontejeda opened this issue Jul 13, 2022 · 0 comments
Open

Problem Monkey Patching Rails 7.0 #1092

deivinsontejeda opened this issue Jul 13, 2022 · 0 comments

Comments

@deivinsontejeda
Copy link

deivinsontejeda commented Jul 13, 2022

I have an issue when run my app in production RAILS_ENV=production. I have a initializer file which add a custom method

# frozen_string_literal: true
# config/initializers/kaminari_active_record_relation_with_limit.rb

require 'kaminari'
module Kaminari
  # Active Record specific page scope methods implementations
  module ActiveRecordRelationWithLimit
    MAX_COUNT_LIMIT = 10_000

    # This is a modified version of
    # https://github.com/kaminari/kaminari/blob/c5186f5d9b7f23299d115408e62047447fd3189d/kaminari-activerecord/lib/kaminari/activerecord/active_record_relation_methods.rb#L17-L41
    # that limit the COUNT query to a configurable value to avoid query timeouts.
    # The default limit value is 10,000 records
    def total_count_with_limit(column_name = :all, options = {}) # :nodoc:
      # more code here
    end

    # prepend this module 
    Kaminari::ActiveRecordRelationMethods.prepend(self)
  end
end

In test & development everything works as expected but when I want to compile assets got following error.

deployer@1e89e413e91b:/usr/src/app$ RAILS_ENV=production rails assets:precompile 
rails aborted!
NameError: uninitialized constant Kaminari::ActiveRecordRelationMethods

    Kaminari::ActiveRecordRelationMethods.prepend(self)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Did you mean?  Kaminari::ActiveRecordRelationWithLimit
/usr/src/app/config/initializers/kaminari_active_record_relation_with_limit.rb:39:in `<module:ActiveRecordRelationWithLimit>'
/usr/src/app/config/initializers/kaminari_active_record_relation_with_limit.rb:6:in `<module:Kaminari>'
/usr/src/app/config/initializers/kaminari_active_record_relation_with_limit.rb:4:in `<main>'
/usr/src/app/config/environment.rb:7:in `<main>'
Tasks: TOP => environment
(See full trace by running task with --trace)

In development (rails c)

irb(main):002:0> Company.page.total_count_with_limit(:id, limit: 2) 
  Company Count (0.6ms)  SELECT COUNT(count_column) FROM (SELECT "companies"."id" AS count_column FROM "companies" LIMIT $1) subquery_for_count  [["LIMIT", 3]]
=> 1
irb(main):003:0> 

Any thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant