Создание индексов MongoDB с помощью Mongoid в среде, отличной от Rails

#ruby #mongodb #mongoid #rake #roda

#ruby #mongodb #mongoid #грабли #рода

Вопрос:

Я пытаюсь создать API на основе Roda (не Rails), используя MongoDB в качестве моей базы данных. Я установил Mongoid gem и настроил соединение. К сожалению, когда я пытаюсь создать определенные индексы с помощью rake db:mongoid:create_indexes , задача завершается неудачно из-за отсутствия environment таковой. Что я должен сделать / включить в свой Rakefile , чтобы обеспечить требуемую задачу?

Обратная трассировка:

 rake aborted!
Don't know how to build task 'environment' (See the list of available tasks with `rake --tasks`)
/home/tomasz/.rvm/gems/ruby-2.7.1/bin/ruby_executable_hooks:24:in `eval'
/home/tomasz/.rvm/gems/ruby-2.7.1/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => db:mongoid:create_indexes
(See full trace by running task with --trace)
  

Соответствующая часть моего Rakefile :

 require 'mongoid'
path = Gem::Specification.find_by_name('mongoid')
load "#{path.gem_dir}/lib/mongoid/railties/database.rake"
  

rake -T вывод:

 rake db:create_indexes                    # Create indexes specified in Mongoid models
rake db:drop                              # Drops all the collections for the database for the current Rails.env
rake db:mongoid:create_indexes            # Create indexes specified in Mongoid models
rake db:mongoid:drop                      # Drop the database of the default Mongoid client
rake db:mongoid:purge                     # Drop all non-system collections
rake db:mongoid:remove_indexes            # Remove indexes specified in Mongoid models
rake db:mongoid:remove_undefined_indexes  # Remove indexes that exist in the database but are not specified in Mongoid models
rake db:mongoid:shard_collections         # Shard collections with shard keys specified in Mongoid models
rake db:purge                             # Drop all collections except the system collections
rake db:remove_indexes                    # Remove indexes specified in Mongoid models
rake db:reset                             # Delete data and loads the seeds
rake db:seed                              # Load the seed data from db/seeds.rb
rake db:setup                             # Create the database, and initialize with the seed data
rake db:shard_collections                 # Shard collections with shard keys specified in Mongoid models
  

Ответ №1:

Вам необходимо:

  • Определите задачу с именем environment ,
  • В этой задаче загрузите все ваши классы модели.

Способ загрузки ваших классов моделей зависит от вашего приложения.