RailsでのTimeZone設定を復習する
最近実務で嵌ったことから理解不足を痛感。これを機に整理することにした。 標準時とタイムゾーン 日本とアメリカでは時差があり、日本では今が昼であってもアメリカは夜だったりします。 地球の自転や太陽との関係性など天体的な問題から地球全域で同じ時間帯を採用することができないため、各々の国や地域で採用する時刻系が異なっています。 ある地域で共通している時刻系をその国の標準時と呼びます。...
View ArticleRailsでデータベース抽象化レイヤを正しく活用する
## `はPostgresでエラー、”はMySQLでエラーになる × User.where('`users`.status = ?', ACTIVE).first User.where('`users`.`status` = ?', ACTIVE).first User.where('"users".status = ?', ACTIVE).first...
View ArticleHomebrewのupgradeに伴いimagemagickのバージョンが上がってRailsアプリが起動しなくなった
現象 rails s でWebrickが起動しない。 $ rails s /Users/k_okishima/.rvm/gems/ruby-2.3.1@some_project/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require':...
View Article`bundle install`でnokogiriとnokogumboが入らない
よくあることだけど、表題の通り。 プロジェクトで使われているRubyのバージョンがアップしたのでrvmのgemsetも作り直して`bundle install`かけたらnokogiriのインストールでこけた。 関係ありそうな環境の変化は以下の通り。 Rubyのバージョンが2.2.3から2.3.1にアップした Mac OS Sierra 以下のコマンドですんなり入った。一応メモ。 brew...
View ArticleRubyで標本の分散・標準偏差・変動係数算出まで
統計学の本読んでるけど公式よりコードの方が頭に入る。 # 適当な標本を定義 samples = [1,2, 1, 0.8, 0.7, 1.1, 1.3, 1, 1.6, 0.9] => [1, 2, 1, 0.8, 0.7, 1.1, 1.3, 1, 1.6, 0.9] # 標本サイズ n = samples.count => 10 # 平均(算術平均) mean =...
View ArticleRSpecで特定のサンプルだけ実行する
RSpecで特定のサンプルだけ実行する RSpecで特定のサンプルだけ実行したいことがけっこうある。 例えば下記ようなスペックがあるとする。 # encoding: utf-8 require 'rails_helper' describe 'User' do describe 'active scope' do it 'foo bar' do # ... end it 'hoge piyo'...
View ArticleHerokuのRailsアプリの環境をstagingに設定する
1. Herokuアプリの環境変数をstagingに設定する 設定の対象が新しく作るアプリか既存アプリかで手順が異なる。 新しくアプリを作る場合 下記コマンドで環境をstagingと指定してい作成。 $ heroku create app-name --remote staging...
View ArticleMac OS X(El Capitan 10.11) で Herokuへデプロイするまでの手順
一応備忘録としてメモ。 1. Herokuに登録する 下記から登録できる。 Heroku _ Sign up 2. Toolbeltをインストール 下記URLからherokuのCLIをインストールする。 https://toolbelt.heroku.com/ 上記URLからパッケージをインストール後、ターミナルから下記のようにバージョンを表示できればインストール完了。 $ heroku...
View ArticleSprocketsについて復習する
Sprocketsの概要 Railsではアセットファイル(JS, CSS, 画像などWebサイトの直接のレスポンスではないもの)を効率的に管理するためにAsset Pipelineという枠組みを提供している。 Sprocketsは、そのAsset Pipelineの基盤となるgem。 Rails3.1から導入された。 Sprocketsの役割 アセットパッケージング機能を提供。 具体的には下記など。...
View ArticleCapybara::Poltergeist でリモートデバッグ
Capybara::Poltergeistのデバッグ機能について RSpecでもサーバサイドのテストではpry-byebugのようなおなじみのデバッガは使えるが、Capybara::Poltergeistをドライバーとして利用している(js: trueな)クライアントサイドのテストでは使えない。 このような場合はPoltergeistが提供しているリモートデバッグ機能を使用することができる。...
View ArticleRSpec + Capybara + Poltergeist + PhantomJSでの結合テストのjs :trueについて
久しぶりに使ったら結合テストのときにドライバにPoltergeistが選択されなくてちょっとはまったのでメモ。 結論からいうと、Capybaraの設定ファイルでCapybara.javascript_driver = :poltergeistと指定してればメタデータでjs :trueの指定が必要。 Capybara.default_driver =...
View ArticleDatabaseCleanerの設定
DatabaseCleanerについて テスト前後のデータベースのデータを処理する用途によく使われるGem。 テストは意図しない結果にならないように、そのテストに必要最低限なデータだけを準備して実行する必要がある。 例えば、あるテストケースを実行する際に他のテストケースで生成されたデータの影響を受けてテストケースが失敗するということを避けなければならない。...
View ArticleRailsでアプリ内の全モデルクラスを取得する
ORMにActiveRecordを使っている場合 資料を作る時に必要になったので標題のようなことをやりたい。 下記のような手順で取得してあとはエディタ(Vim)とか表計算ソフト(エクセル)で調整することにした。 tables = ActiveRecord::Base.connection.tables # ActiveRecordがマッピングしているテーブルを取得 models =...
View ArticleRSpec3の設定
spec_helper(もしくはrails_helper)でのRSpecの設定項目を理解していく。 RSpecのバージョンはで確認。 spec_helper.rbトップレベルでのメソッド ActiveRecord::Migration.maintain_test_schema! テストを走らせる前に実行してないmigrationがないかを確認する。具体的には必要に応じてrake...
View ArticleRSpec2からRSpec3へ移行(アップグレード)する手順
アップグレードの手段としては2通りある。 その1. 一旦RSpec2.99にアップグレードしてから段階的にRSpec3へのアップグレードを行う RSpec2からRSpec3へ移行するためのバージョンとしてRSpec2.99がある。 RSpec2.99にアップグレードすると、RSpec 2系の動作を保持した上で、RSpec...
View Articlegem開発時におけるGemfile, Gemfile.lock, gemspecの取り扱いについての注意事項
GemのリポジトリにGemfile.lockをチェックインしない アプリの開発では配置先によって利用するGemのバージョンが固定されていることが重要視されるため、Gemfile.lockはリポジトリにチェックインしたほうがいい。 しかし、gemライブラリの開発では依存関係を緩やかに定義し、柔軟性を持たせることが重要なポイントなのでGemfile.lockはリポジトリにチェックインしないほうがいい。...
View ArticleRubyでの外部ファイルの読み込み
requireによる外部ファイルの読み込み requireでは組み込み変数である$LOAD_PATHに登録されているディレクトリからファイルを探していく。 require 'foo' # 拡張子は省略することができる Rubyバージョンによる$LOAD_PATHの扱いの違い ただし、Ruby1.9.2以降とそれ未満のバージョンとでは、$LOAD_PATHの扱いに違いがある。...
View ArticleHerokuへのデプロイで1時間近く嵌った件
Missing `secret_token` and `secret_key_base` for ‘production’ environment, set these values in `config/secrets.yml` Heroku、便利ですね。 CLIツールインストールして`git push heroku master`実行するだけでデプロイできます。...
View ArticleRails エンジン入門 その1 〜ローカルでエンジンを生成してホストアプリケーションからマウントするまでの手順〜
Rails エンジン入門 | Rails ガイドを読んで、Railsエンジン(以下単にエンジンと記載)の仕様について学習したときの備忘録です。 エンジンの概要 エンジンはアプリケーションのミニチュアのようなもので、ホストアプリケーションに対してエンジンが保有している機能を提供します。...
View ArticleMacでpow(Rackサーバ)を使う
powについて Mac(OS X)でRailsの開発を行う際に、powというRackサーバを入れると便利です。 powを使うことで今まで”localhost:3000″のようなホストとなっていたものが”project.dev”のようなバーチャルホストで開発ができて、さらにLAN内からも共有できます。...
View Article