@Castiel

Как передать глобальные переменные в блок do?

Получаю конфиг из файла
$app_settings = YAML.load_file("#{File.dirname(__FILE__)}/settings.yml")


затем в классе делаю так
def initialize
		@client = Twitter::REST::Client.new do |config|
		  config.consumer_key        = $app_settings[:twitter][:api_key]
		  config.consumer_secret     = $app_settings[:twitter][:api_secret]
		  config.access_token        = $app_settings[:twitter][:access_token]
		  config.access_token_secret = $app_settings[:twitter][:access_token_secret]
    end
	end


но из $app_settings не получается вытащить значения. Как их все таки передать?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
viktorvsk
@viktorvsk
В каком классе ? Что получаете? Как не получается вытащить ?
Смотрите, что в переменной. Возможно, она инициализируется позже, чем твиттер клиент. Возможно, там другая структура. Возможно, нужно строки вместо символов указывать в качестве ключей
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
keksmen
@keksmen
Just a programmer
Как вариант, проблема может быть в области видимости. Попробуйте при создании экземпляра класса записывать ссылку на переменную в какое-нибудь свойство объекта.
Ответ написан
Комментировать
@fuCtor
Ruby разработчик
После парсинга, ключи строковые в 99% случаев, если явно не задано делать их символами:
$app_settings['twitter']['api_key'] - должно быть так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы