ちくわ工務店

雰囲気でつくろう

勉強メモ hatenablog Gemを使ってはてなブログに投稿する

なにそれ

github.com

参考

メモ

特に詰まったところもなくてよかった😄 (設定ファイルがconf.ymlじゃなくてconfig.ymlだったくらい)

今回は非公開ブログにアクセスしたかったのではてなの設定画面からOAuth scope(許可操作)のread_private, write_privateにチェックを入れた。

書き方メモ Ruby

Ruby初心者なのでggr方もよちよちである。

同じ苦労の繰り返しはつらいので随時まとめる。

continue的なやつ

nextを使う

map

概要

配列の中身を変換する

用例

a1 = [100, 200, 300]
a2 = a1.map { |x| x * 2 }
p a2 # => [200, 400, 600]

参考

Rubyのmap, map!メソッドの使い方 - UX MILK

reduce

概要

配列の内容を使って繰り返し計算する

用例

numbers = [1,2,3,4,5]
puts numbers.reduce {|sum, n| sum + n } # => 15

参考

https://ref.xaio.jp/ruby/classes/enumerable/reduce

オブジェクトの変換

StringInteger

用例

s = "1993"
puts s.to_i # => 1993

参考

https://ref.xaio.jp/ruby/classes/string/to_i

Addressable::URIString

用例

Addressable::URI.encode(url)

参考

http://www.rubydoc.info/gems/addressable/Addressable/URI#encode-class_method

文字列操作

連結

str = 'abc' << 'def'
# => "abcdef"
str = 'abc'.concat('def')
# => "abcdef"

参考

https://qiita.com/Kta-M/items/c7c2fb0b61b11d3a2c48

勉強メモ Instagram gemを使う

自分の投稿を引っ張ってくるまでのメモ

結果から言うとエンドポイントが古いAPIがあって一部使えなかった。 でもとりあえず欲しいAPIのエンドポイントはまだ生きていたので使用した。

参考

インストール

Gemfileに以下を追加してbundle install

gem 'instagram'

アプリケーションの登録, Client IDの取得

下記から登録

http://instagram.com/developer/

登録内容は参考ページ参照

登録できると、CLIENT ID, Client Secretが取得できる。

なお、最初はSandbox Modeなる設定になっている。 Instagramのコンテンツに完全にアクセスするにはレビューが必要らしい。

Sandbox Modeでも機能制限はあるものの普通にAPIは使えるっぽい。 詳しくはこちら

取得したClient IDClient secretを登録

require 'instagram'

Instagram.configure do |config|
  config.client_id = "CLIENT_ID"
  config.client_secret = "CLIENT_SECRET"
end

AccessTokenを取得

APIを使用するためににAccessTokenが必要。 使用しないと怒られる

400: The access_token provided is invalid. (Instagram::BadRequest)

AccessTokenの取得方法はこちら

以下にかいつまんだ取得方法を

1. Codeを取得する

以下のURLを叩いてcodeを取得する

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

叩くとredirect URLにcodeが付加されている

http://your-redirect-uri?code=CODE

これをコピっておく

2. AccessTokenをリクエス

以下のCURLを叩く

    curl -F 'client_id=CLIENT_ID' \
    -F 'client_secret=CLIENT_SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token

うまくいくと以下のレスポンスが返ってくる

{
    "access_token": "fb2e77d.47a0479900504cb3ab4a1f626d174d2d",
    "user": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "..."
    }
}

フィードを取得する

以下、実装例

require 'instagram'

Instagram.configure do |config|
  config.client_id = "CLIENT_ID"
  config.client_secret = "CLIENT_SECRET"
end

Instagram.access_token = "ACCESS_TOKEN"
medias = Instagram.user_recent_media(USER_ID)

medias.each do |media|
  p media
end

ここで必要なのはACCESS_TOKEN(前述)とUSER_ID USER_IDはAccessToken取得時のレスポンスの"id"からコピペする。

勉強メモ Twitter Gemを使ってTweetする

参考

流れ

  1. Gemfile作る
  2. TwitterAPI Keyを取得する
  3. コード書く

Gemを追加

Gemfileに以下を追加してbundle install

gem "twitter"

TwitterAPI Keyを取得

参考記事の通りにやった。

コードを書く

参考記事の通りにやった。

結果

勉強メモ Bundlerについて

Ruby初心者なんでメモ

参考

メモ

  • Gem: Ruby言語用のライブラリ
  • Rubygems: gem専用のパッケージ管理システム
  • Bundler: プロジェクト内で使うRubygemsを管理するしくみ。
    • gem同士の互換性を保ちながらgemの導入、管理を行う
    • GemfileにインストールしたいGemを記述し、それを元にbundlerを使ってインストールを行う

Gemfileの作成

Bundle init

gemのインストール

bundle install

gemのアップデート

bundle update

bundlerで指定したgemを使う

これをやらないとシステムに入っている最新版のgemを使う

Bundle exec ruby hoge.rb

インストールしたgemをプログラム内でロード

require "hoge"