Я явно принципиально не понимаю, как передавать аргументы и вызывать методы в Rails.
Я пытаюсь выполнить тестовый вызов Stripe с фиктивной информацией и получаю сообщение об ошибке, когда пытаюсь запустить эту команду с консоли:
Stripe::CustomerApi.new(30).create_stripe_customer
Мой класс, в котором находится этот метод, выглядит следующим образом:
require 'stripe'
module Stripe
class CustomerApi
def initialize(id)
@user = User.find(id)
@company_profile = @user.company_profile
Stripe.api_key = 'my test key info'
end
def create_stripe_customer
request = Stripe::Customer.create({
email: '[email protected]',
name: 'john doe',
address: {
city: 'Brothers',
country: 'US',
line1: '27 Any Street',
postal_code: '90210',
state: 'CA',
}
})
Rails.logger.info request
end
end
end
Идея здесь в том, что как только тест заработает, я передам фактическую информацию о пользователе через значение id.
Добавление трассировки стека из консоли рельсов.
irb(main):001:0> Stripe::CustomerApi.new(30).create_stripe_customer
User Load (7.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 30], ["LIMIT", 1]]
CompanyProfile Load (2.7ms) SELECT "company_profiles".* FROM "company_profiles" WHERE "company_profiles"."user_id" = $1 LIMIT $2 [["user_id", 30], ["LIMIT", 1]]
Traceback (most recent call last):
3: from (irb):1
2: from app/services/stripe/customer_api.rb:15:in `create_stripe_customer'
1: from app/services/stripe/stripe_client.rb:11:in `initialize'
ArgumentError (wrong number of arguments (given 1, expected 0))
Трассировка ссылается на файл Stripe_client, но я не знаю почему. Это отдельный файл, в котором я пытался выполнить тот же вызов API, используя REST API. У него нет одинаковых методов.
@smathy добавил то, что у меня есть из консоли
Файл полосы client.rb ДЕЙСТВИТЕЛЬНО имеет метод инициализации. Я собираюсь это удалить.
Ну, а строка 15 этого файла — это элемент :name вашего хэша. Я не думаю, что вы бежите тем, чем, по вашему мнению, бежите. Возможно, вы отредактировали часть своего кода и не перезагружали консоль?





Щенок. Я дебил. Трассировка стека показана здесь:
from app/services/stripe/stripe_client.rb:11:in `initialize'
что я вызываю оба метода инициализации для двух разных файлов в одной и той же области папки. Я предполагаю, что это нет-нет. Я удалил метод, который не использую, и проверил SAT.
Я предполагаю, что структура папок для обоих файлов разная, и оба файла имеют разные имена. Я запускаю ваш код на своем локальном компьютере со структурой папок. приложение/услуги/полоса/customer_api.rb
и этот код отлично работает, когда я запускаю команду, упомянутую ниже тебе стоит попробовать то же самое
Stripe::CustomerApi.new(1).create_stripe_customer
У меня был второй файл в той же папке с методом инициализации. По какой-то причине команда вызвала оба метода инициализации.
Показать трассировку стека.