rails

Rails4.1でrspec実行した時にエラーが出た

rails4.1にupdateしてからrspecを実行した時に以下のエラーが出た。 warning: you should require 'minitest/autorun' insteadこれの対処方法としては、 require 'minitest/autorun' をspec/spec_helper.rbに追加。 そうするとwaringがなくなるはず。 またsh…

Rails4.1の新機能を使って端末毎のviewの切り替えをする

Rails4.1からviewの切り替えをする仕組みが組み込まれました。 今まではJpmobileなど使ってやったと思います。ですが、今後は今回追加されたこの機能を使うことになると思います。1.before_actionに読み込ませるメソッドにuser agentをチェックするロジック…

Railsとyeoman、gruntjsを使う方法

アプリで表示する画面を作成するためにAnuglarJS、yeomanを使ったものを現在作成中です。 とは言え、まだ良く分かってない。 先日の日記でも書いた通り、こちらを参考にしているで、まずはRailsのroot直下にngappと言うフォルダを作成し、ngapp配下にgruntjs…

neo4j + heroku

HerokuのアドオンでGraphDBというのがあって、それを試してみようと思った。 まずはローカル環境でということで、GrapheDB(Neo4J)を自分のMacに入れてみた $ bew install neo4j ・・・・・・・途中省略・・・・・ ・・・・・・・・・・・・・・・・ => Cavea…

Rails + compass

自分が作成したアルバムアプリの画面周りを改善したくcompass/bower/gruntsJSを使っていこうと思い調べている。 で、取りあえずcompassを使う環境設定までのメモを残す。 とは言え簡単なんだが・・・。まずはGemfileに以下を追加 gem "compass-rails", githu…

paperclipで画像アップロードを含めたテストをfactory_girlを使ってテストする

先日paperclipをバージョン4にアップデートしたら、今まで通っていたテストが失敗した。 ので、factory_girlを使っている場合、どう書くのが良いのか調べた。まずpaperclipを4にしてからcontent_typeのチェックを行うバリデーションをhas_attached_fileの後…

今更ながらrspecとfactory_girlを使ってのテスト書き方

今更ですが、factory_girlでテストを書く時の記述例を示します。 18 require 'spec_helper' 19 20 describe User do 21 22 let!(:user1) { FactoryGirl.create(:current_user) } 23 let!(:auth_provider1) { FactoryGirl.create(:current_user_auth_provider…

pumaをherokuで使う

pumaをherokuで使う方法を書いておきます。1,gemファイル編集 Gemfileに以下を追加 gem 'foreman' gem 'puma' 2.Procfileを編集する web: bundle exec puma -t ${PUMA_MIN_THREADS:-8}:${PUMA_MAX_THREADS:-12} -w ${PUMA_WORKERS:-2} -p $PORT 3.herokuにデ…

pumaを使ってみる

railsのアプリケーションサーバとして最近業務ではunicornを使っている。が、pumaを使った事がなかったので、ちょっと試しに使ってみようと思いやってみた。まずはインストール gem 'puma' bundle install --path vendor/bundleで次に設定ファイルを作成。co…

Railsのモデル部分のロジックを今度はservice層に移した

この前のブログでモデルのビジネスロジック層を分ける記事書きましたが、あれから色々見て改めて考えた。 で結論service層を設けてユーザ登録部分を移した。 1 class UserRegister 2 3 def find_user_by_provider_and_uid 4 @auth_provider = AuthProvider.w…

Railsでモデルを分割しようと思った時

Rails4から導入されたconcernsを使うという方法もあるが、これは「他のモデルにまたがる処理があるときそれを分割する」場合に使うということらしいので、単純にモデルに色々な処理が入り過ぎたり、重複が沢山あってそれを整理するという場合には適用し辛い…

Rails4でデータあれば、それを返しなければ作る、という処理をやりたい時

Rails3では、first_or_createというメソッドがありましたが、Rails4からはfind_or_create_byというメソッドを使います。 例として、次のように書きます。次の例はUserテーブルに対しemailで検索して、データがあればそれを返しなければ登録します。 User.fin…

Rails4のfilter処理

Rails4でコントローラのメソッド実行前に何か処理を挟みたい場合、次のように書きます。 #処理を入れる before_filter login? #処理を入れたくない場合 skip_before_action :login?, :only => [:new, :create, :destroy,] 取りあえずメモということで

Rails4でJSON形式のデータを返す

Rails4系からjson形式のデータを返すのにJbuilderというgemを使うことがデフォルトになりました。ので軽く使ってみました。 def my_list @photos = User.find(params[:user_id]).photos.page(1).per(5) render json: @photos end 続いて対応するview側のソー…

rspecを使った場合の画像アップロードのcontrollerのテスト

Paperclipを使って画像アップロードしている場合、コントローラのテストをどう書いたら良いのだろうか。今回はspec/fixtures以下にテスト用の画像があるとして、その書き方例を書く。 require 'rack/test' describe PhotosController do describe "photo 投…

Rails4でセッションをMemcachedで管理する

rails4ではデフォルトでセッションをクッキーで管理します。で、memcachedで管理したい場合は、次のようにdalliを使います。 # memcached client gem 'memcachier' gem 'dalli' 今回herokuに最終的にアップしようと思います。その際使うmemcachedアドオンと…

Rails4でconcernsを使ってみる

Railsでロジック部分をモデルに書くようにしているとモデルがFatになってきます。 Rails4では、そういう場合にconcernsにコードをうまく分割してモデルをスリムにすることができます。この方法はRails3でも出来るのですが、Rails4からプロジェクト生成時にco…

気になるgem達

今日凄く寒いですよね。 昨日調べていたgemで まだ使ってないけど使ってみたいgem 調査中のgem をここにメモ draper viewのロジックを分離する quiet_assets assets関連で出力されるログを抑える。(ログが奇麗になり、みやすくなる) foreman バックグランド…

Railsアプリケーションのプロファイリングで使えるgem speed_gunを使ってみて

最近凄く寒くなってきましたね。何か新しいことを学ぼうと日々思っているのですが、今日はrailsのgemについてです。 今回はプロファイリングツールとして使えるspeed_gunの使い方についてです。 まずGemfileをに追記してます。 gem 'speed_gun' 続いてbundle…

Rails4キャッシュについて

Rails4からpageキャッシュなくなるなどキャッシュの部分が変わったので、Rails4でキャッシュ(fragmentキャッシュ)を使う場合についてざっと調べたのでメモ。 cache_digestsを使います。 これを使わないとテンプレートに変更があってもキャッシュが削除されま…

Heroku+campfire+hubot

最近会社でもHubotを使う機会がありましたので、HubotをHerokuで使う場合の手順を書いておきたいと思います。前提としてCampfireとherokuへアカウントを登録しておく必要があります。campfireへは自分用とhubot用の二つのアカウントが必要です。 では、手順…

Railsで複数画像アップロードをする

Rails + Paperclipで画像アップロードが出来ますが、複数の画像を一気にアップロードしたい場合があると思います。その場合はjquery-upload-railsを使うといいと思います。使い方はgithubページに書いてあるので分かると思いますが、一点注意が必要です。以…

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 …

Railsでbowerを使ってJavaScriptのパッケージ管理をする

Bowerを使ってJavaScriptのパッケージ管理をしたく調べたので書いておきます。まず、bowerのインストール $npm install -g bower続いてRails側の設定ですが、bower-railsを使います。その際jquery-railsはコメントアウトしておきます。 #gem 'jquery-rails' …

AngularJS on Rails

AngularJSとrailsの連携に関するメモです。参考は以下のサイトを参考にしましたAngularJS on Rails 4 - Part 2まずはRailsプロジェクトを作成しておく。 Gemfileには今回AngularJSと連携するためにangular-gemを追加しておく。 gem 'angular-gem' ちょっと前…

Rails/Heroku開発のナレッジ1

暫く書いていなかったな。 最近凄く寒くなって、冬苦手だなと思い始めました。この前までは「冬好きです」と言ってたのに。。さて、今年の6月にRailsとHerokuとの連携について発表させていただきましたが、その後色々やったので、続きとして幾つかナレッジを…