RubyからGroongaを使う2

RubyからGroongaを使うためにrroongaというgemを使います。 以下作業のログ。 # mroonga対応 gem 'rroonga' まずはチュートリアルを参考にテーブルを作成してみました。 irb --simple-prompt -rubygems -rgroonga Groonga::Context.default_options = {:enco…

RubyからGroongaを使う

全文検索をプライベートで作っているアプリに入れようと思い、色々調べた. elasticsearchにしようかと思ったが、考えた結果Groongaにしようと決めました。でrroongaを使うことにして調べてみた(まだ途中ですが)。 参考にしたのはここ もう少し纏まったら、…

rails4の条件付きアソシエーション

Rails4から条件付きアソシエーションの記述の仕方が変わりconditionsパラメータが非推奨になりました。変わってどう書くのかを以下に記載します。テーブル同士の関連(1体多など)に条件を追加した場合があります。例えばusersテーブルとcommentsテーブルがあ…

これは良い資料だ

これは良い資料なので、何かと読み返したりしよう。https://speakerdeck.com/katsuma/service-development-for-usersあとここも参考になるな https://github.com/Sdogruyol/awesome-ruby#imagery

RailsとHerokuと全文検索 その2

elasticsearchを使うため色々調べ中。 クラウドサービスのbonsaiを使うため実装しておりますが、接続エラーが出てしまう。 テストとローカルでは、多分別の方法を考えた方が良いのかな。 取りあえずGemfileには、こんな感じで記述 41 # elasticsearch対応 #g…

RailsとHerokuと全文検索 その1

Herokuで動かすRailsアプリに全文検索の機能を追加しようと思った。 で全文検索のソリューションを何にするか考えた時にGroongaかElasticsearchかなと思いました。 で、Herokuで動かすと考えた時にElasticsearchが良いと思い採用することにしました。Heroku…

travis ci連携続き

herokuに自動でディプロイまでさせたい場合は、以下のように.travis.ymlに記載します。 deploy: provider: heroku api_key: secure: ******************************* app: [APP_NAME] on: repo: [git_repo_name]これはtravis ciのコマンドラインツールを使…

travis ci連携

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

ActiveRecordのnewとbuild

ActiveRecordでモデル間の関連を定義している場合でインスタンス化する時にnewでなくてbuildを使うとコードがすっきりする。 これはパーフェクトRuby on Railsを読んでいて「へー」って思ったのでメモ。例えばUserとMovieで1対多の関係がある場合は以下のよ…

Fiberについて

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

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

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

active_decoratorも使ってみた

前回の記事でdraperを使ってview側のロジックを減らすというのを書きましたが、今回はactive_decoratorです。設定の仕方は簡単です。 Gemfileにまずは追加してbundle installを実行してインストールします。 gem 'active_decorator'$ bbundle install --path…

draperを使ってviewに書いてしまいがちなロジックを減らす2

先日書いた記事でdraperについて紹介しましたが、これの続きです。 railsでページネイションを使う場合、最近はkaminariを使うケースが多いと思います。で、このkaminariを使って取得した値(例えばMovieというモデルがあるならばMovie.page(1).per(20)という…

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…

テストを並列で実行させてスピードを上げる

テストの実行速度を上げるために、テストを並列で実行させたい場合があります。 その場合はParallel_testを使います。まずGemfileに追加します。 gem "parallel_tests" 続いてconfig/database.ymlを以下のように編集します。今回はSqlite3の場合です。 test: …

FactoryGirlsを使っているが

FactoryGirlsの使い方で、いつも FactoryGirl.create(:current_user_group1) 見たいに書いていたのですが、この最初のFactoryGirlっていうのは省略出来るんですよね。 だから最近加わったプロジェクトではこれを削除しています。それとActiveRecordでレコー…

youtub検索APIを使う

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

rails4でActiveRecordの初期値をセットする方法を教えてもらった

rails4で今開発しているんですが、ActiveRecordの初期値を設定する方法があるようで教えてもらいました。例えば今までだと user = User.new user.name = 'hoge' ・・・・ ・・・・ user.status = 0 # default値 みたいに書いていたところを class User after…

railsのcontrollerのテスト続き

ちょっとメモ書き。 controllerのテストでcontroller内で定義したメソッドの戻り値のチェックをする時はassiginsメソッドを使う expect(assigns[:user].name).to eql('testUserName') 例えば上記みたいに。 またそれ以外にresponse.statusでステータスコード…

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

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

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

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

before_filterで指定したアクションをある処理だけ実行させてくない場合の書き方

以下メモの意味も込めて。。。。表題の件ですが、色々やり方はあります。 一つは before_filter :login? , except: [:index] のようにexceptを指定するやり方。 もう一つは skip_before_filter :login?, only: :index を使って該当する処理だけbefore_filter…

itunes search apiを使ってみる

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

guardを使ってrubocopも実行、コーディングチェックをこまめにチェック

コーディング規約のチェックとしてrubyではrubocopを使うと思います。 で、これをjenkinsなどのCIにかませてかませてチェックさせますが、gitにコミットする前に自分でチェックというのを自動化させたいと思いguardでテスト動かすので同じようにやってくれな…

モデルのannotateを出力するgem

モデルに対応するテーブル定義をコメントとして出力してくれる便利gemのannotateについてです。 今使っていますが、忘れないようにメモですソースはここまずはモデルに出力させてみましょ。テストとかは対象外にしたいので、以下のように書きます。 bundle e…

シェルのメモ

プロセスを観て、あったらkillするとしたい場合、 ps aux | grep 'hoge' | grep -v 'hoge'| xargs killみたいなことをすると思いますが、pgrepやpkillを使うともっと簡単になります。 pkill -f 'hoge'または pgrep -f 'hoge' | xargs 'hoge

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…