Ключи и токены доступа аккаунтов теперь постараемся сохранить в нашей базе данных, обеспечив возможность несложного их добавления, удаления и редактирования: это более удобно. Начало работы над нашим с вами новым приложением описано в статье 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
Теперь, открыв вновь созданный 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
Сделали? замечательно, теперь в 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; между твитами следует, как видно из кода контроллера, рандомная пауза от одной до десяти секунд.
Комментарии в блоге