Я создал библиотеку, которую хочу инициализировать один раз при запуске приложения.Итак, я написал инициализатор, который делает это.И этот шов сработает, когда я запускаю консоль rails, но @push_notifications
недоступен из моих тестов.Как это может быть?
app / models / post.rb
class Post < ApplicationRecord
after_save :send_notifications
spec / models / post_spec.rb
require "rails_helper"
RSpec.describe Post, type: :model do
before(:each) do
@user = Fabricate(:user)
@post = Fabricate(:post, user: @user)
end
it "is valid from the fabric" do
expect(@post).to be_valid
end
lib / push_notifications.rb
class PushNotifications
def initialize
puts "PushNotifications#initialize"
FCM.new(ENV["FCM_SERVER_KEY"])
end
def new_post_in_group(post:)
# [cut...]
end
config / initializers / PushNotifications.rb
require "#{Rails.root}/lib/push_notifications"
puts "initialize PushNotifications"
@push_notifications ||= PushNotifications.new
$ rails console
initialize PushNotifications
PushNotifications#initialize
[1] pry(main)> @push_notifications
=> #<PushNotifications:0x00007fa22650b250>
выполнение тестов
rspec spec/models/post_spec.rb
initialize PushNotifications
PushNotifications#initialize
Post
is valid from the fabric (FAILED - 1)
Failures:
1) Post is valid from the fabric
Failure/Error: @push_notifications.new_post_in_group(post: self)
NoMethodError:
undefined method `new_post_in_group' for nil:NilClass
# ./app/models/post.rb:85:in `send_notifications'