Суббота, 04 ноября 2017 21:40

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

Оцените материал
(0 голосов)

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

 

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

 

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

 

Dev banner 3

 

Гем 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

 

К сожалению, нет возможности в настоящий момент показать демо.

 

Сделали? замечательно, теперь в 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; между твитами следует, как видно из кода контроллера, рандомная пауза от одной до десяти секунд.

Последнее изменениеЧетверг, 14 декабря 2017 11:59

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

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

Poker onRails

Комментарии в блоге

  • Aleksej Yes. You can see it, I switched the temperature from C to F in the module on this page (Costa… 2024-10-01 21:43:42
    jWeather by ip. Погода по ip для Joomla!
  • Anne Is it possible to change temperature to F vs C? 2024-10-01 18:55:58
    jWeather by ip. Погода по ip для Joomla!
  • Aleksej Первое, что бросается в глаза: период времени, прошедший между тем, как автор комментария разбросал аналогичный текст по нескольким интернет-площадкам рунета,… 2024-07-02 14:10:05
    Tobeamerica эмансипе
  • Валерий Л. Предыдущий отзыв неактуален. Это было недоразумение, мы его уладили. Компания вернула мне деньги, никаких претензий к ней я не имею.… 2024-07-01 17:10:43
    Tobeamerica эмансипе
  • Евгения Кличко Спасибо. 2024-06-25 01:03:32
    Joomla cache. Problems and solutions