Ruby неинициализированная константа Slack (NameError) - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь вызвать один класс в другом классе, который находится в другом модуле.

require 'json'
require 'pry'

module Parsers
  class JiraParser
    def initialize(event)
      @event = JSON.parse(event)
    end

    def call
      reporter_email = parse_reporter_email
      ::Slack::GetUserId.new(reporter_email).call
    end

    private

    attr_reader :event

    def parse_reporter_email
      event.dig('issue', 'reporter', 'emailAddress')
    end
  end
end

Parsers::JiraParser.new(event).call

структура кода:

source__
       |-parsers__
       |          |_ jira_parser.rb
       |
       |-slack____
                  |_ get_user_id.rb

Когда я пытаюсь вызвать это класс в консоли я получаю сообщение об ошибке:

неинициализированная константа Slack (NameError)

Поэтому я подумал, что мне просто нужно добавить require "slack/get_user_id", но я вместо этого получил другую ошибку:

require ': невозможно загрузить такой файл - slack / get_user_id (LoadError)

Я что-то пропустил?

EDIT :

$LOAD_PATH

=> ["/Users/usr/.rvm/rubies/ruby-2.5.0/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib",
 "/Users/usr/.rvm/gems/ruby-2.5.0/gems/coderay-1.1.2/lib",
 "/Users/usr/.rvm/gems/ruby-2.5.0/gems/method_source-0.9.2/lib",
 "/Users/usr/.rvm/gems/ruby-2.5.0/gems/pry-0.12.2/lib",
 "/Users/usr/.rvm/gems/ruby-2.5.0/gems/json-2.2.0/lib",
 "/Users/usr/.rvm/gems/ruby-2.5.0/extensions/x86_64-darwin-18/2.6.0-static/json-2.2.0",
 "/Users/usr/.rvm/gems/ruby-2.5.0/gems/pry-rails-0.3.9/lib",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/site_ruby/2.6.0/x86_64-darwin18",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/site_ruby",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/vendor_ruby/2.6.0",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/vendor_ruby/2.6.0/x86_64-darwin18",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/vendor_ruby",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/2.6.0",
 "/Users/usr/.rbenv/versions/2.6.1/lib/ruby/2.6.0/x86_64-darwin18"]

1 Ответ

0 голосов
/ 28 января 2020

Если вы запускаете это как один ruby сценарий, вы должны требовать файлы, необходимые для запуска вашего кода. Вам нужно будет убедиться, что каждый файл был необходим, прежде чем вы сможете вызывать классы или методы, определенные в них. Есть много способов go об этом в зависимости от вашей структуры кода. Но вы просто не можете выполнить любой код, пока он не будет определен во время выполнения. См. Этот ответ для получения дополнительных идей.

Лучший способ запросить все файлы из каталога в ruby?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...