ruby

rubotyを使って簡単ボット作成

botと言えばhubotが有名ですが、このhubotをと同じbotをrubyで作れるライブラリがあります。 それがrubotyです。このページに行くとサンプルをHerokuにディプロイして動かすというのが予め用意されています。 実に親切ですね! サンプルではslackを使ってい…

rubyでメソッドの処理速度をはかるとき

rubyで処理速度をはかる時は以下のようにbenchmarkモジュールを使います。 で、この前Railsのコミットログを眺めていたら、gsubメソッドをtrに置き換えたというのがあったので、 試しに以下のように処理の計測を行ってみました。 require 'benchmark' hoge =…

travis ci連携

前もやったのですが、今書いているコードをtravis ci連携した。 で、色々書いたのでメモしておくが、要はGemfileと.travis.ymlを書けば良い。 Gemfileには以下を追加する必要があった(多分別の何かが足りないからかもしれないけど) # travis ci対応? group :…

Fiberについて

Fiberはruby1.9から追加されて機能です。この前いじっていた時、良くわからなかったのですが、ちょうどそれを解説しているwebページもあってそれをみて「あー」って感じになったので、メモしておきます。ようはFiberはyieldの処理の結果を保持し続けるという…

Procとlambdaの説明する時に書いたサンプル。

rubyの勉強会した時にblock、proc、lambdaについてちょっと理解が曖昧なところがあり、うまく説明しきれなかったので、復習した。 で、参考になる記事があったので、それを元に理解するために自分で手でコード書いてみた。 そのときのコードを覚え書きの意味…

draperを使ってviewに書いてしまったロジックを減らす

view側に表示するためにデータを整形するロジックを書いてしまうことなどあると思います。 そういう場合helperを使うというのも一つ手ではありますが、最近ではpresenterという層を設けてviewからそういったロジック部分を取り除くやり方が主流となって来て…

fiberとprocについて・・・その1

fiberは1.9から追加された機能です。 でprocと似ているのですが、微妙に違います。 $:.unshift(File.dirname(__FILE__)) fi = Fiber.new do |first| # 処理 second = Fiber.yield("#{first}!") "#{first}, #{second}" end puts fi.resume('hello') puts fi.r…

youtub検索APIを使う

現在風邪で頭がぼーっとしているのですが、少し良くなったのでyoutub検索APIを使って動画の検索をしてみました。 用意するのはまずDevloper Key。ここから行けます。 で、今回私はyoutube_itというgemを使いました。 gem 'youtube_it' $bundle install --pat…

rubyのクラスメソッドについて改めて考えた

ruby勉強会を社内で行うため、改めて色々見ていたらクラスメソッドに関する記事を読んだので復習の意味も込めてここに書く。 前回の記事で特異クラス、特異メソッドについて書きましたが、それに関連する話で、そもそもクラス定義の class Dog end は Dog = …

rubyの特異メソッド、特異クラスについて考えてみる

rubyMaganizeを読み直していた時に、丁度特異メソッドについて書かれていたので纏めの意味も込めて。 rubyのクラスメソッドは何気なく使っているが、改めて人に説明しようとしたときにネタとして特異メソッド、特異クラスについて考えた。 例えば require 'a…

itunes search apiを使ってみる

最近作っているもので、itunesから映画や音楽の情報を取得したいと思い何か良い物がないかなーと思っていたら、これがあったので使いました。 ※これ使わなくても、ここみたら自分でも出来たなと思いましたが、あえて同じのを作らなくても良いかなと思いまし…

railsテンプレートについて

前回railsテンプレートを使ってrails newする時に、いつもやるような事はなるべくこのタイミングでやってしまおうということを書きました。で、先日新しく作ってみたいrailsアプリがあったので、テンプレート使ってrails newしたのですが、rakeが一切動かな…

rubyでメソッドが優先される順番について

rubyでクラスの継承とmoduleのmixinを使う場合とで、同じ名前のメソッドがあったときに、どれが優先されるのか。 結論「一番関係が近い方のメソッドが優先される」です。 例えば以下の例 require 'ability' require 'animal' class Dog < Animal include Abi…

rubocopのコーディングチェックをvimに組み込む2

'scrooloose/syntastic'を使うとコーディングチェックがファイル保存時とかにも出来るらしいので入れてみた。 NeoBundle 'scrooloose/syntastic' let g:syntastic_mode_map = { 'mode': 'passive', \ 'active_filetypes': ['ruby'] } let g:syntastic_ruby_c…

Ruby勉強会にて

今日は社内のRuby勉強会を行った。内容としては rubyの文法 railsの概要 最初のrubyの文法ではメソッドの書き方からclassやmoduleの書き方を説明した。 moduleについては、サンプルも紹介した。 これですMixInで使うincludeとextendについての話もした。 こ…

railsのテンプレートの追記

deviseの設定を生成するのとconfig/applicatoin.rbに設定を追記する場合は以下のようにテンプレートファイルを作る # devise generate generate 'devise:install' generate 'devise user' rake 'db:migrate' # config setting application do %Q{ config.gen…

rackについて改めて勉強する

以前一回勉強したが、改めてrackについて学習 ちょうどよい学習サイトがあったので、そこを見て勉強。 rackアプリのポイントは以下。 最低限必要なことは・・・ callというメソッドを持っていること callメソッドの引数としてWebサーバからのリクエストを受…

Rails newで自作テンプレートを使って初期に毎回やることを自動化する

Railsのアプリケーションを最初にnewで作成する時に、大体いつも使うgemの設定をまず最初にします。 例えばrspecを使えるようにしたりだとか、twitter-bootstrapを使えるようにとか・・で、これは毎回やる作業になってきて、ここを自動化した方が効率良いな…

今更ながらgemを作ってみる。続き

DB周りのgemを作成しているのですが、railsの場合はDBの接続周りはconf/database.ymlから読みとります。なので、そこを読み取る周りについてです。railties/lib/rails/application/configuration.rb を参考にしたりしました。 でコードですが、以下です requ…

tapについて

最近勉強のためにgemを作成しているのでだが、参考にしているgemのソースの中でtapメソッドを使っている箇所があった。 ので、今回はtapメソッドについて覚え書きです。tapメソッドはブロック変数にレシーバ自身を入れてブロックを実行する。戻り値はレシー…

今更ながらですが、gemの作り方

今更ですが、gemの作り方をちょっとメモっておきます。今回はmultidbっていうプラグインを作成するとします。 ※この名前のプラグイン自体既にありますが・・・。1.bundleを使ってひな形を作成$ bundle gem multidb2.続いて~.gemspecを編集。今回はactive_rec…

rails+rspec+spring+guardでテストを実行してみる

Railsでrspecを実行するときに実行時間を短くするための試みを昔 rspec guard spork を使ってやっていました。今回はsporkでなくspringを使ってみます。Gemfileを以下のようにします。 group :test do gem 'rspec' gem 'rspec-rails' gem 'simplecov', requi…

Railsのテストでshoulda-matchersを使う

Rspecのテストでshoulda-matcherを使うとテスト結果の確認が楽。 なので、使い方をメモっておくために、まずはcontroller側のサンプルを載せる 1 require 'spec_helper' 2 3 describe AlbumsController do 4 fixtures :users 5 fixtures :albums 6 fixtures …

Chefのレシピを書く

Chefのレシピを書く練習を始めた。 今回はどこにもあるかもしれないがApacheを入れるもの まず、Berkshelfを使って雛形を作成する $ cd site-cookbooks $ berks cookbook httpd次に出来上がったファイルを編集する まずは、site-cookbooks/httpd/recipes/def…

Chef Solo + vagrant で環境構築について学ぶ

Chefで最近環境構築することが社内でも多くなってきたので、自分も学習のためにvagrantを使ってVM環境で試す事にした。最初に参考にしたのはここです。 $ mkdir chef-study $ cd chef-study $ vagrant init続いて生成されたVagrantファイルを編集 4 Vagrant.…

Rspecでテスト書くときメモ

Rspecでテストを書く時、次のようにして書きます。 前はshouldを使っていたのをexpectを使って書く。 とその前にまずはrspecで書かれたテストコードを生成。 rails g rspec:model userで生成されたspec/model/user_spec.rbの中身を修正。 1 require 'spec_he…