かまたま日記3

プログラミングメイン、たまに日常

Ruby

CircleCI上のRSpecのテスト時間をparallel_split_testを使って短縮する

CircleCIを使ってテストを実行する場合、テストはcircleci tests splitコマンドで分割した上で複数コンテナを使うことでテストの実行時間を短縮することができます(参考リンク)。ただ、コンテナ数を増やすのも限界がありますし*1、少し前までtiming-based sp…

クラスインスタンス変数はそのクラスからしか参照できない

RubyのクラスはClassクラスのオブジェクトなので、インスタンス変数を持てます。クラスレベルとかクラスメソッドの中で定義された@付きの変数はクラスインスタンス変数(Class Instance Variable)と呼ばれ、そのクラスからしか参照できません、継承されてる場…

メソッドの引数にメソッドの返り値を渡す場合、blockの渡し方に注意する

たとえば、 こんなメソッドがあるとします。 def foo(arg) puts "#{arg}, #{block_given?}" end def var if block_given? yield else 'no block' end end 下記のようにブロックの渡し方でfooメソッド側のblockとなったりvarメソッド側になったりします。想定…

GoogleのAPIトークンをS3に保存する

GoogleAPI Clientには Google::Auth::TokenStore というトークンを保存するためのインターフェースが存在していて、デフォルトでは Google::Auth::Stores::FileTokenStore Google::Auth::Stores::RedisTokenStore のふたつがある。これのS3バージョン。 ひと…

GmailをAPI経由で取得する

GmailのAPI経由で未読のメールを1件検索して既読にするサンプル。OAuthのトークンがない場合はコンソールに出てくるURLをブラウザで開いて認証後に出てくるコードを入力する。 require 'google/apis/gmail_v1' require 'googleauth/stores/file_token_store'…

GitHubのissueを擬似的に消すためのRubyスクリプト

GitHubのissueは削除することが出来ないので、タイトルと本文とコメントを全部消すことで、擬似的になかったことにします。 (これでもタイトルの変更履歴は残るので、完全に消すことは出来ないわけですが...) require 'octokit' require 'highline/import' O…

JenkinsでRubyスクリプトの出力をすぐに出す

問題 JenkinsのJobでRubyスクリプトを呼んだら、処理が終わるまで puts とかの標準出力がJenkinsのコンソールに出ない 対策 標準出力がバッファリングされないようにRuby側に以下の記述を追加する $stdout.sync = true

Redmineを使おう その4

今日もRubyのお勉強。 文字列の前述のサイトの文字列の章のヒアドキュメントの項目まで行きました。(javaの文字列との違い) ・シングルクォーテでも囲える ・ヒアドキュメントという使い方も可能

Redmineを使おう その3

Redmineを導入してみたものの実際私個人はPJを運用していないので使い方を学べません。 ということでせっかくなのでRubyで簡単なアプリケーションを作成してみようということになりました。そのためにまずはRubyの簡単な文法をマスターすることからスタート …

Redmineを使おう その2

その1:http://sin1t2.blog14.fc2.com/blog-entry-506.html今回はMySqlとSubversionのインストールから。以下を参考にしました。 MySQLのダウンロードとインストール Subversionをインストールするいよいよ本題のredmineの導入です。 とりあえずここを見な…

Redmineを使おう その1

WEB形式のプロジェクト管理ツール「Redmine」を導入してみたいと思います。 最終的には会社で導入したいのですが、まずは導入ノウハウを自宅でつみたいと思います。<目的> ・プロジェクト管理の効率化 うちの会社(部署)はエクセルでタスク管理、PJ管理、…