2017/09/23
色々あって嫁が退院しました。
rails
- jsファイルはAssetsに入れたら、AssetsPipelineとかいう仕組みで使えるようになるらしい。細かい事はまた調べる
<%= %>
とすると結果が出力されるから気をつける- oauthにはomnioauthを使った。
- twitterへ飛んで認証もらったら、コールバックでトークンもらってあれこれすればいいぽい。 完全に理解した。(わかってない maji de)
ということでログイン機構がついた。まあ、ログインしたユーザの情報はまったく表示してにゃ〜からわからんけどね。 ついでに echo-js で遅延読み込みを追加した。 とりあえず、あとは無限スクロールとレイアウトとかとかかな。
その他
つーか前々から聞いてたけど、ようやく色々調べたよ、twitterのディスプレイガイドライン 実質API取得情報の使い方を強制するガイドラインだし、ファボを扱う都合上都合上絶対公開出来ないアプリだなあ。 怖いな〜戸締まりしとこ
2017/09/16
今日あった事
- 色々と買い物
- 晩飯 is 🍣
おさぼり
今日はおさぼりました。
その他
英語の勉強をしようしようと思いながら踏ん切りがついていなかったが、 とりあえず英文系の本を買ったので、rubyと同じでここに適当に書いていくことにします。
2017/09/15
今日あった事
- テストをしてました。
rails
前略、Twitterのファボ(死語)画像をもりっと出すアプリを作ろうと思った。 昨日まででとりあえず画像がもりっと出るようになったが、ページめくり的な事はできなかったのだった。
ということで超適当なpagerを作った
twitter_controller.rb
#!/usr/bin/ruby # coding: utf-8 class TwitterController < ApplicationController def show Dotenv.load client = Twitter::REST::Client.new do |config| config.consumer_key = ENV['Consumer_Key'] config.consumer_secret = ENV['Consumer_Secret'] config.access_token = ENV['Access_Token'] config.access_token_secret = ENV['Access_Secret'] end count = 200 is_blank = params[:max_id].blank? && params[:since_id].blank? is_next = !params[:max_id].blank? is_prev = !params[:since_id].blank? if is_blank fav_tweets = client.favorites(count: count) elsif is_next fav_tweets = client.favorites(count: count, max_id: params[:max_id]) elsif is_prev fav_tweets = client.favorites(count: count, since_id: params[:since_id]) end @result = [] fav_tweets.each do |tweet| if !tweet.media.blank? tweet.media.each do |media| @result << media.media_url_https.to_s end elsif !tweet.urls.blank? tweet.urls.each do |url| @result << url.url.to_s end end end @first = fav_tweets.first.id @last = fav_tweets.last.id end end
max_id
を指定すると、そのIDを含まず次のツイートからカウント分ツイートを取得するsince_id
を指定すると、そのIDを含まず前のツイートからカウント分ツイートを取得するparams[:hoge] get時のパラメタを取得するぞ!
で、Viewはこう show.html.erb
<% if @result %> <%= @result.each do |url| %> <%= link_to image_tag(url, {width:100, height: '25%'}), url %> <% end %> <% end %> <% if @first %> <%= link_to '前へ', controller: 'twitter', action: 'show', since_id: @first %> <% end %> <% if @last %> <%= link_to '次へ', controller: 'twitter', action: 'show', max_id: @last %> <% end %>
とりあえず…… ページめくりは出来たぞ…… これが良いのか悪いのかもわからんが……。
2017/09/14
今日あった事
- ひたすら人力でデグレテストを回す。テストコードなんてもの弊社にはない、人力アタックだ!
- 雑務は毎日降ってくるんだなあ みつを
- 口頭でばっと説明されて、数分後に忘れた。言葉じゃ覚えられないのでチケット切って欲しい(クズ)
rails メモ
昨日言ってた html をViewに吐く方法
html_safe を使うと良いみたい。ただ、セキュリティー的にどうなんとは思う。 今回みたいな oEmbedAPIの返す html を貼り付けるだけなら、問題ないんだろうか?
そういう用途でなく、Controllerの値を元にどうこうするなら、 基本的には link_to_text とかのヘルパーを使うべきみたいだなあ
TwitterAPI
ファボった画像をばばっととりあえずみたいなあ、という所から適当に作ってみている。 昨日は少し時間をかけて oEmbedAPI? を調べたが、 結局 TwitterAPIでメディアのURLが取れる事がわかったので、oEmbedAPIは不要となった。
def show Dotenv.load client = Twitter::REST::Client.new do |config| config.consumer_key = ENV['Consumer_Key'] config.consumer_secret = ENV['Consumer_Secret'] config.access_token = ENV['Access_Token'] config.access_token_secret = ENV['Access_Secret'] end fav_tweets = client.favorites(count: 100) @result = [] fav_tweets.each do |tweet| if !tweet.media.blank? tweet.media.each do |media| @result << media.media_url_https.to_s end end end end
- blank? : railsのメソッド? nilやら空文字やらだったら trueとなる。便利そう
- array.each do |hoge| : do end 構文便利すぎじゃない?超良い
- to_s : いわゆる to_string()
- Dotenv 環境ファイルを用意して、そのファイルの記述内容をあたかも環境変数かのように扱える便利なやつ
- client.favorites(count: 100) : 100件ファボを取得する
で viewを…
<% if @result %> <%= @result.each do |url| %> <%= image_tag url %> <% end %> <% end %>
とすると…… とりあえずズラッとエッチな原寸大画像が並びました!
きったね
とりあえず明日はこれを整理して、見栄えを良くしようかな
2017/09/13
今日あった事
- 仕事はいつも通り進めた。一通り雑務が終了したので明日から自分の仕事に戻れる。
- このタスク管理方法を導入する事にした A4用紙を使った自分流のタスク管理術とセルフマネジメント #sgadvent - give IT a try
railsメモ
Railsでgemを追加する方法
- Gemfileに欲しいgemを追記する
Bundle install
する 以上
簡単だなあ、C++も見習って欲しい
サーバ起動時の設定
Application.rb にかけば良い
その他
TwitterのoembedAPIのレスポンス jsonのhtmlをViewに渡して描画して欲しいんだけど、タグがそのまま書き込まれちゃって出来ない。 エスケープされてるのかなぁ、なんかやり方があるんだと思うが、今日のところはわからんのであった。
ひとまず明日には自分のファボ一覧をページに吐き出したい……。
2017/09/12
今日あった事
- 会社ではいつも通り作業を行った
- 課題の起票作業って結構時間食われる
- 着手しようにも着手できない作業が地味に頭に残ってるの辛い
今日のrailsメモ
view
Viewには色々と便利なビューヘルパーと呼ばれるものがある
ビューヘルパーには色々とタイプがあるらしい
_tag
はModelとは無関係のデータを扱う汎用的なヘルパらしい。
他にも _for
はモデルオブジェクトを編集するのに特化しているそうだ。
あとは、 _tag無しのFormヘルパー
、後は t.で呼び出す f.Formヘルパー
なんなんだ
<%= form_tag({controller: :address, action: :show}, id: :fm, class: :show) do %> <label for="keywd">検索郵便番号</label> <%= text_field_tag :ziphead, '', size: 3 %> : <%= text_field_tag :ziptail, '', size: 4 %> <%= submit_tag '検索' %> <% end %>
form_tag 基本的には formタグをよしなにするやつ
text_field_tag テキストフィールドをよしなにするやつ
submit_tag サブミットを…
で、postするとなれば受け取る側やらルート設定が当然必要になったので、 この間作った郵便番号表示する showページと 郵便番号を入力してpostする searchページ に分割してみた。 postを受けるページは、こんな感じで書けばいいみたいですな。
post 'address/show' get 'address/search'
ただ、この状態だとshowをgetで呼び出すと、そんなページねぇよって怒られるみたいだなあ。 ということでリダイレクトさせるようにした。
post 'address/show' get 'address/show', to: redirect('address/search') get 'address/search'
こんなんでいいのか。
2017/09/10
Ruby on Railsをちまちま触ってみているので今日の備忘録
Model モデルデータ、まぁ、DB操作周りか
Controller Viewで表示するデータとかを用意する所 ( hoge_controller.rb )
View Webページ側表示する内容とかを書く( hoge.html.erb )
ruby g
generateコマンド 超便利
ruby g model name a:string b:string
Modelデータを作ってくれる!
ruby g controller show
コントローラーとshowメソッドも作ってくれる、すごい!
細かくは下記を参照… いつも忘れる「Railsのgenerateコマンド」の備忘録 - maeharinの日記
それからこれはrubyの話になるけど…
params = URI.encode_www_form({zipcode: '1234567'}) uri = URI.parse("http://zipcloud.ibsnet.co.jp/api/search?#{params}") @query = uri.query
としてGETリクエスト用のパラメタが作れるのねえ リクエストはこう……
response = Net::HTTP.start(uri.host, uri.port) do |http| http.open_timeout = 5 http.read_timeout = 10 http.get(uri.request_uri) end case response when Net::HTTPSuccess ... when Net::HTTPRedirection ... else ... end
responseはcase-whenでresponsecodeを判定できるらしい 仕組みとしては === でオブジェクト型の比較をしているから?みたいだ……。 つまり、responseの結果ごとに別のクラスとして返ってくるんだなあ、なるほど……。
それから例外処理は
begin rescue IOError => e rescue => e end
ちまちまアウトプットして覚えていこうと思う