Rails version 5.2.2

Ruby version 2.6.1

Mongoid version 8.0.2

I am using docker and there also I am getting same issue. Tried locally as well with rails s and getting same issue there. Its not allowing rails db:create. I have application.rb file where mongoid module is included. In mongoid.rb file some customized methods are written to convert ids into string.

Error :

    26: from bin/rails:4:in `<main>'
    25: from bin/rails:4:in `require'
    24: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/commands.rb:18:in `<top (required)>'
    23: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/command.rb:46:in `invoke'
    22: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/command/base.rb:65:in `perform'
    21: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
    20: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    19: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    18: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:142:in `perform'
    17: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:142:in `tap'
    16: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:145:in `block in perform'
    15: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/railties-5.2.2/lib/rails/commands/server/server_command.rb:145:in `require'
    14: from /home/xxx/sites/demo/config/application.rb:11:in `<top (required)>'
    13: from /home/xxx/sites/demo/config/application.rb:11:in `require'
    12: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid.rb:24:in `<top (required)>'
    11: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid.rb:24:in `require'
    10: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid/document.rb:5:in `<top (required)>'
     9: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid/document.rb:5:in `require'
     8: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid/extensions.rb:35:in `<top (required)>'
     7: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid/extensions.rb:35:in `require'
     6: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid/extensions/array.rb:173:in `<top (required)>'
     5: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/mongoid-8.0.2/lib/mongoid/deprecable.rb:30:in `deprecate'
     4: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/deprecation/instance_delegator.rb:22:in `deprecate_methods'
     3: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/deprecation/method_wrappers.rb:57:in `deprecate_methods'
     2: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/deprecation/method_wrappers.rb:57:in `each'
     1: from /home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/deprecation/method_wrappers.rb:67:in `block in deprecate_methods'
/home/xxx/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/deprecation/method_wrappers.rb:67:in `alias_method': undefined method `blank_criteria' for class `Array' (NameError)

Any help on this will be appriciated.

Mongoid.rb file is as follows:


module Mongoid
  module Document
    def as_json(options={})
      attrs = super(options)
      attrs["id"] = attrs["_id"] = attrs["_id"].to_s
      attrs
    end
  end

  class Criteria
    def pluck_to_s(key)
      self.pluck(key).map {|id| id.to_s}
    end
  end
end

application.rb file is as follows :


require "active_model/railtie"
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require 'action_cable/engine'
require "sprockets/railtie"

require 'openssl'
require 'mongoid'

Bundler.require(*Rails.groups)

module Demo
  class Application < Rails::Application
    config.api_only = true

    config.action_mailer.perform_deliveries = true
    Rails.configuration.action_controller.per_form_csrf_tokens = true
    config.middleware.use(Mongoid::QueryCache::Middleware)

    # For other Services
    config.autoload_paths += Dir[Rails.root.join('app', 'models', '{*/}')]
    config.autoload_paths += Dir[Rails.root.join('app', 'enums', '{*/}')]
    config.autoload_paths += Dir[Rails.root.join('app/components/**/')]
    config.autoload_paths += Dir[Rails.root.join('app', 'services', '{*/}')]

    # For eager load
    config.eager_load_paths += %W(#{config.root}/lib)

    config.middleware.insert_before 0, Rack::Cors do
      allow do
        origins '*'
        resource '*', headers: :any, methods: [:get, :post, :put, :delete, :options]
      end
    end

    config.cache_store = :redis_store, ENV.fetch('REDIS_URL')
  end
end
0

There are 0 best solutions below