Ich versuche, eine Rake-Aufgabe zu erstellen, die einen Dienst verwendet. Innerhalb dieses Dienstes möchte ich den letzten gespeicherten Datensatz einer MonthlyMetrics
Tabelle in meiner Datenbank laden.Nicht initialisierter konstanter Fehler beim Versuch, auf einen Datenbankeintrag in einem Dienst zu verweisen
Innerhalb meiner Rake-Datei:
require 'metrics_service'
namespace :metrics do
@metrics_service = MetricsService.new
task :calculate_metrics => [:check_for_new_month, :update_customers, :update_churn, :do_more_stuff] do
puts "Donezo!"
end
# ...more cool tasks
end
Und mein MetricsService
innerhalb lib/metrics_service.rb
:
class MetricsService
def initialize
@metrics = MonthlyMetric.last
@total_customer_count = total_customers.count
assign_product_values
end
# Methods to do all my cool things...
end
Jedes Mal, wenn ich versuche, so etwas wie rake:db:migrate
zu laufen, bekomme ich folgende Fehlermeldung:
NameError: uninitialized constant MetricsService::MonthlyMetric
Ich bin mir nicht sicher, warum es versucht, auf MonthlyMetric
zu verweisen, wie es ist ... Als eine Klasse innerhalb der MetricsService
Namespace ..? Es ist nicht so, als ob ich versuche, MonthlyMetric
als verschachtelte Klasse innerhalbMetricsService
zu definieren ... Ich versuche nur, es als eine ActiveRecord-Abfrage zu bezeichnen.
Ich habe andere ActiveRecord Abfragen, zum Beispiel User
, in anderen Diensten innerhalb des gleichen Verzeichnisses durchgeführt.
Was mache ich hier falsch?
Sie hatten völlig Recht! Obwohl die Umgebung in das Aufgabenfeld fallen sollte, wird andernfalls ein Fehler in der Hash-Rakete ausgelöst. – Doug