Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Ruby on Rails: постинг твитов через Twitter API. Продолжение

Продолжаем работу над rails-приложением, умеющим постить твиты в тот или иной твиттер-аккаунт.

 

Ruby on Rails: постинг твитов через Twitter API

 

Ключи и токены доступа аккаунтов теперь постараемся сохранить в нашей базе данных, обеспечив возможность несложного их добавления, удаления и редактирования: это более удобно. Начало работы над нашим с вами новым приложением описано в статье Ruby on Rails: постинг твитов через Twitter API.

 

 

Гем twitter уже присутствует в Gemfile, не так ли? - ок, начнем с того, что создадим scaffold, каркас приложения; не следует пренебрегать многочисленными удобствами, предлагаемыми Ruby on Rails:

 

rails generate scaffold Tweet name:string key:string secret:string token:string token_secret:string

 

Следующий этап разработки - в материале Снова Rails и Twitter API, а также materialize и webpacker.

 

Теперь, открыв вновь созданный tweets_controller, комплектуем def index блоком кода, начало которому положено в предыдущей статье (на самом деле совсем негоже ему находиться во вьюхе). Только немного изменим логику, заставив приложение получить четыре ключа из хэша params:

  

if params[:tweet].present?
@client = Twitter::REST::Client.new do |config| 
config.consumer_key = params['select'].split.first 
config.consumer_secret = params['select'].split.second 
config.access_token = params['select'].split.third 
config.access_token_secret = params['select'].split.fourth 
end 

@array = params[:tweet].split(/[\r\n]+/) 
@array.each do |i|
@client.update(i) 
sleep rand(1..10) 
end
end

 

Рабочий пример описанного в статье кода, в числе других Rails Examples - всегда возможно найти в тестовом блоге автора на herokuapp.com, welcome.

 

Сделали? замечательно, теперь в index.html.erb добавляем нашу с вами старую, но чуть-чуть видоизмененную форму (сахар и соль, как говорится, по вкусу, стили добавите самостоятельно):

 

<form action='/tweets' method='get'>
  <fieldset><legend>Twitter Tweet</legend>
    <textarea type='text' placeholder='Tweet to post ...' name='tweet' ></textarea><br>
    <p><select name="select" >
    <% @tweets.each do |tweets| %>
        <option value="<%= tweets.key %> <%= tweets.secret %> <%= tweets.token %> <%= tweets.token_secret %>"><%= tweets.name %></option>
    <% end %>
    </select></p>
    <input type="submit" value = "tweet" />
  </fieldset>
</form>

 

Далее, не забыв про миграцию -

 

bin/rails db:migrate RAILS_ENV=development

 

- запускаем веб-сервер: rails s. И вот теперь уже можно, нажав на линк New Tweet - ввести ключи доступа вашего твиттера, одного или нескольких, и сразу постить посредством вашего нового Ruby on Rails приложения в выбранный аккаунт ваш твит "Hello, World!"; - ну, или что-нибудь более оригинальное. Не забываем, твитов может быть много, все они вводятся по одному на строку, после которой следует Enter; между твитами следует, как видно из кода контроллера, рандомная пауза от одной до десяти секунд.

Оставить комментарий

Добавьте ваш комментарий