Rails4のJoinについて -> [訂正]includesメソッドでした

Railsでincludesメソッドを使ってjoinする場合はActiveRecordのjoinsメソッドを使います。 User.includes(:photos) で絞り込み条件がある場合は、例えば以下みたいに記述します。 now = Time.zone.now.at_beginning_of_day User.includes(:photos)where(phot…

Railsのsaveメソッドでtrue/falseでなくオブジェクトを返したい場合

通常の場合ActiveRecordのsaveメソッドの戻り値はtrue/falseですが、そうでなく更新結果のオブジェクトを返したい場合以下のように記述するとできます user = User.find(1) user.tap(&:save)

Rails4.2から追加されるActiveJobについて

rails4.2のbeta2が出ましたね。 以前かいたActiveJobについて、修正があったので改めて記事を書きました。ActiveJobとはRails4.2から追加された仕組みで、delayed_jobやresqueなどのキューイングを行うgemを同じインターフェースで使えるようにしたものです…

stackprofを試しに使う

先日のRubyKaigi2014で紹介されたstackprofという解析ツールがあったので、試しに使ってみた。 設定は簡単で gem install 'stackprof' で入ります。Railsで使う場合はGemfileにセットしても良いかもしれません。 書いたらbundle installを実行。以上で設定は…

mrubyと戯れる

mrubyにはcrubyでいうirbのようなものがあります。それがmirbです。これを使うと色々試せます。 ので、これで少しmrubyを実行してみました。 class Hoge def hello puts 'hello' end end これは普通に動きます。 p Hoge.ancestors => [Hoge, Object, Kernel,…

hypermicrodataを試すの続き

gemのインストールが出来なかったので、Gemfileに以下のように記述してインストールをしてみました。 gem 'hypermicrodata', git: 'git@github.com:tkawa/hypermicrodata.git' これでbundle installでgemのインストールは完了です。 早速使ってみようと思い…

hypermicrodataを試す

個人的な研究でAPIの実装をしようと思い、先日のRubykaigiで紹介されたhypermicrodataを使ってみようと思いました。これはJSONを返すというよりか、HTMLをパースして返すAPIの新しい方式(?)の提案のように感じ実際に自分でも色々動かしながら色々感じてみた…

mrubyを試す

今年のrubykaigiはmrubyの話題が結構あったと感じました。LTとかでもmrubyネタが幾つかあったと思います。ので、久しぶりにmrubyをもう一回いじってみようと思います。mrubyは組み込みRubyと言われ、CRubyに比べライトなものになっています。インストールに…

RubyKaigi2014にてパート2

MRuby as Development Platform for Payments CloudWalk payments. 端末の問題tか色々あって悪夢だけど、CloudWalk使うといいよ。簡単に使えるしということかな。 今はwebのIDEがあって、それを使って導入が簡単に??? 開発者にも優しい作り。Mobile First…

RubyKaigi2014にて

Ruby Kaigiのメモ。 走り書きなので、間違いあるかも。 適宜修正します。Symbol GC Symbolについての話から。Rubyは皆さんを飽きさせないために、落とし穴沢山。Symbolを沢山生成することでメモリ圧迫する脆弱性がある。 ScalaやSmallTalkにもSymbolがある。…

Rails4.2の新機能AdequateRecordって

Rails4.2から追加されるActiveRecordの機能にAdequateRecordなるものがあります。 で、これは何かなと見ているとここに記事が書いてあります。ここを見るとfindメソッドやfind_byメソッド時にキャッシュされるから、処理スピードが上がるよという機能と思わ…

Rspecを書く時に参考にすべきサイト

最近rspecのバージョンを3.0.0.beta1から3.1にアップグレードしようと思っているのですが、ちょっと手間取ってしまっています。 ちょっと原因が分かったら色々纏めたいと思っています。で、今日の記事はrspec繋がりで、書き方についてです。今後書き方はここ…

rails4.2をいじってみる(ActiveJobs)

Rails4.2の最新機能のActiveJobを使おうと思い、少し調べてみました $gem install rails --version '~>4.2.0.beta1'このActiveJobは4.2から新たに追加されるキューイングのフレームワークです。 何か動かしながらと思い、サンプルプロジェクト作成。 $ rails…

Railsのステータスコードのシンボル表記一覧

このブログからのコピーです。何かの時にパッと見れるように。Status Code Status Message Symbol 1xx Informational 100 Continue :continue 101 Switching Protocols :switching_protocols 102 Processing :processing 2xx Success 200 OK :ok 201 Created…

facebook graph apiのgem koalaを使って友達一覧を取得する件2

先日ブログでver1.0にしてからfacebookの友達の数を取得するようにしていましたが、会社の同僚の方から「これで出来るよ」と教えてもらったので、再度書きます。修正方法はズバリ @api = Koala::Facebook::API.new('ACCESS_TOKEN') p @api.get_object('me') …

facebook graph apiのgem koalaを使って友達一覧を取得する件

友達が全件取れないのでおかしいと思ったら、Ver2.0からそのアプリでfacebookログインしている友達の数に仕様が変わったらしい。 なので、本当の意味で友達の数を取得したいのであればv1.0を使うようにしないと駄目。でコードで以下のようにkoalaが使うapiの…

仕事でfacebook graph apiをいじるgemを使ってみた

facebookログインはomniauth_facebookとかよく使いますが、facebook内の情報を扱う時に何を使うか、今まであまりちゃんと見てませんでした。 で、先日業務でkoalaを使ったのですが、これは簡単で良いですね。1.インストールはGemfileに追加してbundle instal…

Railsでテーブルに関係ないmodelを作って検索処理を作ってみる(elasticsearchを使って2)

前回の記事で検索出来るようになったが、ヒットして欲しい物がヒットしない。 例えば「abcdef」というタイトルがあるものを検索するときに「abc」でヒットして欲しいが ヒットしない。何がまずいのか、、、調査中ー。追記:2014/08/27 取りあえずHerokuのadd…

Railsでテーブルに関係ないmodelを作って検索処理を作ってみる(elasticsearchを使って)

今回検索用DBは考えた末にelasticsearchを使う事にしました。会社でも使われだしていて、何よりもHerokuでelasticsearchのAddOnが複数あったからです。mroongaをやるには結構大変そうだったので、これは別の機会に・・・。で使うライブラリですが、昔やった…

Railsでテーブルに関連しないmodelを作って検索処理を作ってみる(まだ道半ば)

まずRailsもActiveModelを使います。コードは以下のような感じです class SearchMovie include ActiveModel::Model attr_accessor :keyword validates :keyword, length: { within: 3..20, too_long: '検索文字が長過ぎます', too_short: '検索文字が身近す…

gitメモ

git

ふとした時に忘れてしまっていたので、メモとして残すコミットを取り消したい場合 git reset --soft [コミットのHash値] git reset --hard[コミットのHash値]

githubとpivotaltrackerの連携

前から使って入るがgithubの個人プロジェクトの各機能をpivotaltrackerを使って管理するようにしています。将来的にはこれをもっとメインで使うように会社でもしていければとおもっています。 で、ソース管理はgithubなので、このgithubとpivotaltrackerを連…

Railsのroutingについて

Railsのroutingでは、resourceを考えないといけません。URLもそれに対応していきます。 例えばblogというresourceに対してcommentというresourceが複数ある場合だとcong/routes.rbでは resources :blog do resources :comments end のように書きます。更にna…

ActiveRecordで値の変更前・後の値を見て処理をしたい場合

テーブルのあるカラムの値が更新された時だけ処理をしたいという場合があると思います。その場合、以下のように[カラム名]_wasで変更前の値がとれます。 class Test < ActiveRecord::Base STATUS_SLEEP = 'sleep' STATUS_ACTIVE = 'active' after_update do …

rspecでプライベートメソッドのテストを書きたい場合は

テストを書くとpublicのメソッドだけでなく、privateについても書きたくなる事が暫しあります。 javaの場合だとリフレクションを使ってできますが、rubyの場合、どうするのかなと思って調べたらそこはsendメソッドを使えば出来るとあり、あー確かにそうだと…

railsで権限チェックをするgem pundit

railsではユーザ毎にアクセス件を設定したい場合はpunditというgemをよく使います。 導入は簡単です。 gem "pundit"bundle install続いてgeneratorをつかってpunditで使うクラスを生成します。rails g pundit:installこれでapp/policies/application_policy.…

Railsのクラスパスについて

railsの中身をみてみようと思い、まずはappフォルダなどrailsの各フォルダを読み込む処理をしているところはどこか色々みてみた まずはrails/railties/lib/rails/engine/configuration.rbのpathsメソッドに書いてあった。 def paths @paths ||= begin paths …

macでキーチェーンを削除して焦った件

githubのSSLエラーが出てたので、証明書をバシバシ消していたらgithubだけでなくfacebookも駄目になって凄く焦った。 その時にここのブログを見つけて同じように証明書をダウンロードして何とか解決。 いやー、危なかった。。。

railsの自動読み込み(authload_paths)の中身を見たい場合

railsでちゃんとディレクトリにパスが通っているか確認したい場合「ActiveSupport::Dependencies.autoload_paths」を使う確認できます。 p ActiveSupport::Dependencies.autoload_paths この1行を追加すると、どこがロードされているのか確認できます。 rail…

RubyからGroongaを使う3

全文検索を行う処理は以下のように書いてます。まだ絞り込み検索書いてなくてデータ登録と取得の部分の一部ですけど。 require 'groonga' module Searchable extend ActiveSupport::Concern included do end def self.add(path = [DBファイルのパス], table_…