他人の全ツイートをJSONで一括保存するコマンドを作った
Twitterには、自分の全ツイートアーカイブをダウンロードできる機能があるが、他人のツイートはダウンロードできない。
そこで、他人のツイートをダウンロードするalltweets
というコマンドを作った(もちろん自分のツイートもダウンロードできる)。
許可されていれば、非公開アカウントのツイートもダウンロードできる。
インストール
gemコマンドでインストールできる。Macの場合はsudo
が必要。
$ gem install alltweets
使い方
結果は標準出力に表示されるのでいい感じにリダイレクトする。
$ alltweets tatzyr > tatzyr.json # tatzyrのツイートをJSON形式でダウンロード
RubyGemsとGitHubに公開したgemの名前を変更する
前提
oldname gem側の作業
以下のコードをoldname gemのどこかに書いて、deprecatedになることを伝える。
warn "[DEPRECATION] This gem has been renamed to `newname` and will no longer be supported. Please switch to `newname` as soon as possible."
さらに以下のコードをoldname.gemspec
に追加すると、oldname gemのアップデート時にこのメッセージが出る。
spec.post_install_message = <<-MESSAGE ! The 'oldname' gem has been deprecated and has been replaced by 'newname'. ! See: https://rubygems.org/gems/newname ! And: https://github.com/YourID/newname MESSAGE
最後にバージョンを1つ上げる。
lib/oldname/version.rb
module OldName VERSION = "0.1.1" # テキトーに0.0.1上げる end
newname gem側の作業
newname.gemspec
のdescription
かsummary
に以下の文を追加しておくと親切。
Formerly known as 'oldname'.
Twitterのふぁぼを寿司にするChrome拡張作った
Twitterのふぁぼがハートアイコンの「いいね」に変わった。
Twitterにハートが登場しました | Twitter Blogs
そういう事情なのでふぁぼを🍣にするChrome拡張を作ったらやたら「いいね」された。
ふぁぼを🍣にするChrome拡張作った。
Twitter-💓🍣 - Chrome ウェブストア
https://t.co/INNz0Yb7au pic.twitter.com/uvDPXTz0YL
— Tatzyr (@tatzyr) 2015, 11月 4
iPhoneのカレンダーをGoogle Calendarに移行する方法
iPhoneやiPadのカレンダーをGoogleカレンダーに移行する方法。同期ではなく移行。
iPhoneからAndroidにカレンダーを引っ越したいときや、Googleカレンダーと連携するアプリをiPhoneで使いたいならこの方法で移行するのがおすすめ。
手順
iCloudカレンダー にサインイン
サイドバーのアイコン > パブリックカレンダー をクリックし、カレンダーを共有する
共有したカレンダーの URL をコピーし、ブラウザのアドレスフィールドに貼り付ける(まだreturnキーは押さない)
webcal
をhttp
に変更してからreturnキーを押す。すると、ICS ファイルがダウンロードされるパブリックカレンダーのチェックを外し、カレンダーの一般共有を停止する
Google Calendarにログイン
マイカレンダー > ▼ > 新しいカレンダー をクリックし同名のカレンダーを作成する
右上の設定アイコン > 設定 >「 カレンダー」タブ > カレンダーをインポートをクリックする
「ファイルを選択」ボタンでダウンロードしたICSファイルを選択する
「カレンダー」セレクトボックスで、先ほど作成した同名のカレンダーを選択する
インポートをクリック
これでiCloudカレンダーのGoogle Calendar移行は完了。
るびまRubyist Hotlinks - インタビュイーの好きなメソッド・嫌いなメソッド一覧
Rubyist Magazine(るびま)には、著名なRubyistにインタビューを行うRubyist Hotlinksという企画がある。 Rubyist Hotlinksでは毎回「好きなメソッド、嫌いなメソッドはなんですか?」という質問がされるのでまとめた。
RSpecで「while line = gets」をテストする方法
RSpecでwhile line = gets
のような標準入力のループをテストしたいとき。
Kernel.#gets
はARGF
をレシーバとしたメソッドの省略形なので、ARGF.gets
をモックにすれば良い。
テストしたいコード:
# 標準入力を行ごとに区切って配列にするメソッド def foo ary = [] while line = gets ary << line.chomp end ary end
テストコード:
require "rspec" require "stringio" require_relative "foo" describe "foo" do it "標準入力を行ごとに区切って配列にする" do inputs = StringIO.new("line1\nline2\n") allow(ARGF).to receive(:gets) { inputs.gets } expect(foo).to contain_exactly("line1", "line2") end end
rbenvのインストールにはrbenv-installerを使おう(追記:使わない方がいい)
追記:2018-05-15
rbenv-installer
は以前とは別物になりました。
もはやrbenv-installer
を使うメリットはありません。
追記終わり。あとは古い内容。
rbenv-installer
を使うとrbenvとプラグインを同時に導入できる。
ruby-build
などを入れたりする必要がなくなる。
https://github.com/fesplugas/rbenv-installer
https://github.com/fesplugas/rbenv-installer
rbenv-installerを使ったrbenvのインストール
以下のコマンドでrbenv本体とruby-build
、rbenv-default-gems
、rbenv-gem-rehash
、rbenv-update
などのプラグインが一発でインストールされる。
$ curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash
以下のコードを~/.bash_profile
や~/.bashrc
に追記してbashを再起動するとrbenv
が使えるようになる。
# rbenv export RBENV_ROOT="${HOME}/.rbenv" if [ -d "${RBENV_ROOT}" ]; then epxport PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)" fi
rbenv-installerで入るプラグイン一覧
個々の紹介はしないけどrbenv-installer
を使うとこれらがすべて使えるようになる。
- rbenv-bootstrap
- rbenv-default-gems
- rbenv-gem-rehash
- rbenv-update
- rbenv-use
- rbenv-vars
- rbenv-whatis
- ruby-build