Неспецифический фреймворк MVC ruby gems и пример кода для фреймворка Rails

#ruby-on-rails #ruby #ruby-on-rails-5

#ruby-на-рельсах #ruby #ruby-on-rails-5 #ruby-on-rails

Вопрос:

Я изучал Ruby on Rails, но у меня все еще возникают проблемы, когда дело доходит до Ruby gems с примерами, основанными на irb, а не на Rails или Sinatra framework. Я пытаюсь реализовать блок.функциональность io Bitcoin API. Но код, который я нахожу, относится только к Ruby, поэтому я не уверен, где создать конфигурационный файл для ключа API, а также нужно ли мне создавать контроллер, чтобы заставить это работать в представлениях для Rails.

Драгоценный камень и примеры включены: https://github.com/BlockIo/gem-block-io

Я установил этот драгоценный камень через bundle install на Rails

 gem install block_io -v=1.0.6
  

Пример Ruby показывает следующее:

 >> require 'block_io'
>> BlockIo.set_options :api_key=> 'API KEY', :pin => 'SECRET PIN', :version => 2
  

В каком файле конфигурации Rails я должен ввести вышеуказанный api_key и pin-код?

В приведенном примере они показывают код для получения вашего адреса следующим образом:

 BlockIo.get_my_address
  

Нужно ли мне создавать функцию в контроллере, например:

 def address
 @my_address = BlockIo.get_my_addresses
end
  

и в представлении использовать:

 <%= @my_address %>
  

Мне нужно некоторое руководство в отношении вышеизложенного, любые комментарии или помощь будут высоко оценены.

Ответ №1:

require 'block_io' может перейти в Gemfile подобное gem 'block_io' . Rails / bundler потребует этого автоматически для вас, если имя драгоценного камня также является именем файла, которое вы хотите запросить у этого драгоценного камня.

BlockIo.set_options :api_key=> 'API KEY', :pin => 'SECRET PIN', :version => 2 может быть помещен в инициализатор , например config/initializers/block_io.rb . Этот способ set_options вызывается только один раз, когда Rails запускает сервер, консоль или бегун.

Поместите это вот так в файл config/initializers/block_io.rb

BlockIo.set_options :api_key=> ENV['BLOCK_IO_API_KEY'], :pin => ENV['BLOCK_IO_PIN'], :version => 2

При использовании переменных окружения вы не передаете никаких секретов в свой репозиторий.

Теперь вы должны иметь возможность вызывать BlockIo.get_my_address внутри любого действия.