zakihayaメモ

RubyとRailsのことが中心

Rails

リポジトリをGitHubに変更してCircle CIで自動デプロイしようとしたら大ハマリした

今更ながらCircle CIを使ってみる 前から興味があったCircle CIでの自動デプロイを、機会があったので試してみました。 リポジトリをBitbucketからGitHubに変えて、Circle CIに登録してデプロイできるようになるまで8時間。。。 いい経験にはなりましたが大…

haml使用時に値が無い属性(itemscope)などを追加する

<div itemscope>・・・</div> のような感じで表示させたい場合は %div{ itemscope: true } とすればOK。

Railsでメールを送信する機能を実装する時はmailcatcherを使うと便利

Webアプリを作っていると、メールを送信する機能を作ることがよくあるかと思います。 そんな時はmailcatcherというgemを使うと、仮想SMTPのような形で使えるので便利です。 準備 Gemfileを更新して、 bundle install します。 # Gemfile group :development …

has_manyな関連にbuildした後にsortを実行したい

[Rails] has_many through な関連をチェックボックスで操作するときに苦労した話 | ハレノヒブログこちらのページを参考に、WordPressのカテゴリー選択UIみたいのを作りました。 が、これだと選択されたカテゴリが上に来てしまってソート順が無効になってし…

Rails4でsessionの格納先をactive_record_storeにする

Rails4でsessionの格納にActiveRecordを使うやり方。 gemを追加 # Gemfile gem 'activerecord-session_store', github: 'rails/activerecord-session_store' gemをインストール $ bundle installセッションを格納するテーブルをcreateするmigrationを作成 $ …

Paperclipでadd_attachmentする時にafterを指定したい

これを実行すると class AddAttachmentToUsers < ActiveRecord::Migration def change add_attachment :users, :avatar, after: 'name' end end usersテーブルに下の列が追加されてしまいます。 avater_file_name avater_content_type avater_file_size avat…

lazy_high_chartsでlabelsにformatterを使う場合

こんな感じにすればOK f.yAxis[ {:title => {:text => '降水量'}, :labels => {:formatter => %q|function(){return this.value +'mm';}|.js_code}} ] 参考 :formatter not working for dataLabels · Issue #73 · michelson/lazy_high_charts · GitHub

Rails4でActiveAdminを使ってみる

Railsで簡単に管理画面を作れる系のgem。Ruby Toolboxを見たところActiveAdminが一番人気があるっぽい。 使ったことがあるRailsAdminにしようかと思ったが、せっかくなので試してみた。gregbell/active_admin · GitHub Gemfileに記入 RubyGems.org のはバー…

Capistranoを使う時はブランチ名をdeployにしてはいけない

アプリをデプロイしようとコマンドを打っても全くうまくいかない。 スペルミスも無いのになぜだろうと思ったら、ちゃんとエラーが出てた。 fatal: A branch named 'deploy' already exists. どうやらCapistrano内部でdeployブランチを作って、それをサーバに…

AASMのReadmeを日本語訳してみた

AASMはRubyのクラスにステートマシンパターンを追加できるライブラリです。 業務で使うことがあったので訳してみました。初の試みなので、おかしい点などがあればばしばし指摘してください。元ページ aasm/aasm · GitHub AASM - Rubyのステートマシン このパ…

find_or_create_by・・・が素敵すぎる!

今さら知ったのかよ感がありますが、こんな便利メソッドがあったんですね。 知らなかった!こいつを使うと user = User.find_by_name("zakihaya") || User.new(name: "zakihaya") が user = User.find_or_create_by_name("zakihaya") になる!Rails4からは下…

Railsアプリを作る時の基本設定

自分用にメモGemfile source 'https://rubygems.org' gem 'rails', '3.2.6' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' gem 'mysql2' gem 'haml-rails' # Gems used only for assets and not r…

rails s を実行すると uninitialized constant Syck::MergeKey (NameError) というエラーが発生する

localhost $ bundle exec rails s localhost $ RAILS_ROOT/vendor/bundle/ruby/1.9.1/gems/configatron-2.8.0/lib/configatron/store.rb:324:in `<class:Store>': uninitialized constant Syck::MergeKey (NameError)こんなエラーが出るのでなんだろうなーと思って30分く</class:store>…

RSpec::Mocksが少しだけわかったので、忘れないようにまとめておく

用語 テストダブル テストコードの中で別のオブジェクトの代役を務めるオブジェクト メソッドスタブ レスポンスを自由に定義できるメソッド メッセージエクスペクテーション コールされることが保証されるメソッドスタブ テスト対象コード class Statement d…

Gemfileの ~> の意味

Gemfileを見ていたら「gem "thin", "~>1.1" 」という指定が。 ~>ってなんだろうと思い調べてみた。mg ☂. » [bundler]Bunderを使ったGem管理のメモ Most of the version specifiers, like >= 1.0, are self-explanatory. The specifier ~> has a special mean…

cannot rollback - no transaction is activeというエラーが発生する

ある時から急に「cannot rollback - no transaction is active」というエラーが発生するようになった。 それもタイミングが微妙で、あるモデルのレコードを作成する時は発生しないが、更新する時に発生する。何だかわからず調べていたらそれっぽい投稿を発見…

Railsにrestful_authenticationを組み込んだ時のメモ

既にRails3.0が主流になってきていますが、もしかしたら使うことがあるかもしれないので。 最初の設定 http://www.nightonly.com/blog/?p=611 restful_authenticationで、メールアドレスを使ってログインする。 http://shiroutodesign.blogspot.com/2008/12/…

RedmineのメールをGmailのSMTPサーバを使って送信する

action_mailer_optional_tls_pluginをインストールする Redmineのディレクトリへ行き、下記コマンドを実行します。 # cd (Redmineのディレクトリ) # ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git # gem inst…

options_for_selectで先頭に空白を挿入する

先日記載した、options_for_selectでDBの列を指定して表示するに加えて、先頭に空白を追加したい場合。 select_tag( :item_name, options_for_select( ModelName.all.unshift(ModelName.new).map{ |model| [model.prop_value, model.prop_key] } ,params[:it…

options_for_selectでDBの列を指定して表示する

select_tagでコンボボックスの選択肢をDBにバインドしたい場合 select_tag( :item_name, options_for_select( ModelName.all.map{ |model| [model.prop_value, model.prop_key] } ,params[:item_name] ) ) prop_keyがoptionのvalue、prop_valueが表示される…

タグを残して先頭からの表示文字数を指定する

デザイン担当者の要望で、HTMLのタグは残したまま表示する文字数を制限したいんだけど・・・という要望が。 いつも無茶ばっかだなあと思いながら実装方法はちょっと興味があったので考えてみた。案1:正規表現。 →タグを消しちゃったらもとに戻せないので却…