2013-01-01から1年間の記事一覧

net/http で Rails application の動作チェックをする ; GET

前々から気になっていたので やろうとすること rails g scaffold user name:string email:string rake db:migrate している状態で、 GET /users の response code をチェックすること。 方法 rb ファイルに以下のソースを書く。実行する。 get.rb require 'n…

MySQL ; root のパスワードを忘れた時の再設定方法

実行環境 CentOS 6.5, MySQL 5.1.71 root 権限になる $ su # MySQL サーバーを停止する # /etc/init.d/mysqld stop MySQL をセーフモードで実行 # /usr/bin/mysqld_safe --skip-grant-tables & mysql mysql root のパスを初期化する。 mysql> update user se…

mass assignment と strong parameters

私なりの解釈 mass assignment #=> assign すべきではない物もしてしまう仕組み及び方法 strong parameters #=> mass assignment を防ぐ手段 以下、詳しく 前置き 例えば User モデル(権限つき)の attribute が次の通りであるとする name:string, email:stri…

権限管理 gem ; cancan

Devise に次いでの衝撃 Devise が認証機能を持たせる gem に対して、 cancan は認証後の権限を管理する gem 最終的にやること cancan を用いて 登録 email 権限ごとに挙動 を変化させること 前提条件 rails g devise user からの流れで ユーザー1 matsu@mats…

Devise gem ; email を sign up に使わない方法は

先ず無い 引用元 https://github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-sign-in-with-something-other-than-their-email-address Important note: remember that even if you don’t want to sign in using email, you must have email in…

Devise gem で email もしくは 他の項目 を使って sign in をする方法(sign in 以外もいくつか)

今回は ドキュメントに倣って項目を username にする 分類: 準備 Devise 用設定ファイルの作成 $ rails g devise:install =============================================================================== Some setup you must do manually if you haven'…

devise gem との馴れ初め(動作チェック)(sign upできるまで)

*. gem 'devise' rails 4系 は対応済だと *. rails g devise:install devise の設定ファイル(2つ)をインストしてくれる *. rails g devise (devise用新規 Model もしくは devise を適用したい既存のModel) よく使われるらしい User を Model にしておく (既…

Gon gem ; controller と app/assets/javascript/*.js.coffee を結ぶ

Controller => app/assets/javascript/*.js.coffee の流れ(厳密には違うけど)で、コントローラーで設定した値を CoffeeScript に渡すことができる。 Gemfile gem 'gon' app/views/layouts/application.html.erb <%= include_gon %> # <= #### インクルードゴ…

Rails routing ; concern

concern を使って resources :user do get :search, on: :collection end resources :article do get :search, on: :collection end を concern :searching do get :search, on: :collection end resources :user, concerns: :searching resources :article,…

Rails routing ; resources nesting (member|controller)

入れ子に「できる」ってのは喜ばしくも恐ろしい。用法用量との相談。 resources を nesting した中でさらに member や collection も定義できる。 Sampleapp::Application.routes.draw do resources :user do resources :session do get 'frequent', on: :co…

Rails routing ; resources nest

入れ子の resources 細かいかもしれないが Sampleapp::Application.routes.draw do resources :users do resources :session, :task end end 初めの nesting resources :session, :task これは、結果的に resources :session resources :task としたことに変…

Rails routing ; member, collection

member => ID(固有の値)を必要とする。紐づくオブジェクトの一つのメンバーになるから。 ex. 写真集のプレビューページ(5ページ目だとか、8ページ目だとか) collection => ID(固有の値)は必要としない。それ自体が単一のオブジェクトだから。 ex. 検索 resou…

Rails routing ; namespace

namespace コントローラの数が増えてきて、下のように コントローラをディレクトリ分類したくなったときに使う。 controller/admin/task_controller.rb controller/user/task_controller.rb ... Sampleapp::Application.routes.draw do namespace :admin do …

Rails Model の scope 3系 と 4系

3系 と 4系で違い scope の書き方が変更されている。 (lambda の処理が関係してそう) DEPRECATION WARNING: Using #scope without passing a callable object is deprecated. For example `scope :red, where(color: 'red')` should be changed to `scope :r…

ActiveRecord new_record?

ActiveRecord の new_record? まだ save されていない record だったら true を返す。 違っていれば false。 厳密には、一つのレコードに対するオブジェクトが ストア(保存) されていなければ true 違えば false https://github.com/rails/rails/blob/260471…

find と find_by の違い

ActiveRecord::FinderMethods より モノが違うので一言では書けないです 概要 #find(*arg) 正常系処理 実引数の値はテーブルのプライマリーキーに対応していることを期待 甲. find(value) 値を WHERE 句で条件制約して SELECT する値がテーブル中に存在する…

save/save! create/create!

前提情報 create_table "products", force: true do |t| t.string "title" t.text "description" t.string "image_url" t.decimal "price", precision: 8, scale: 2 t.datetime "created_at" t.datetime "updated_at" end class Product < ActiveRecord::Bas…

new と build

自身で改めて class Cart < ActiveModel has_many :line_items end class LineItems < ActiveModel belongs_to :cart end [1] Cart.new は OK Cart.build は NG [2] c = Cart.new して c.line_items.new, c.line_items.build は OK [3] そもそも build は ne…

find と find_by の違い と 補足

概要 User のレコードに、存在しない session[:id] を find, find_by したとき User.find(999) #=> ActiveRecord::RecordNotFound User.find_by(id: 999) #=> nil になる。 ファインダ find id などの主キーに find する、ということは 目的のレコードが存在…

setIntervarl で call したメソッドが呼ばれない

経緯 CoffeeScript で setInterval で 1秒ごとに起動するメソッドを作っていたとき setInterval(fooFunction, 1000) call しようとしたメソッド(本記事では fooFunctionとする)が、 Uncaught TypeError: Property fooFunction of object [object Window] is …

Vim で SJIS コード読んで文字化けしたときの対応

Vim

経緯 file foo.txt Non-ISO extended-ASCII text, with CRLF line terminators このファイル形式を Vim で読み込むと文字化けする。 一時的対応 Vim で読み込んだ後に、ノーマルモードから :e ++enc=sjis で対応完了 付随 何度やってきたかわからないけど、…

bundle install して rubygems.org に SSH 接続できない時

経緯 rails new foo して bundle install したら Unable to download data from https://rubygems.org/ - SSL_connect のようなエラーが出る 原因 rvm が最新版ではなかった 解決手順 rvm get stable して bundle install したら難なく ディストリ ごとに挙…

【Linux】 yum install foobarbaz するけど Transaction Check Error が出てインストできない

yum install した時 Transaction Check Error が出る 経緯 rpm 使って terminator terminal を入れようとしていた。 闇雲に rpm -Uivh terminatorの古いバージョンrpmパッケージ rpm -Uivh terminatorの新しいバージョンrpmパッケージ のようにガタガタして…

CentOS 日本語入力まで(デスクトップのみ:リモート未考慮)

CentOS 日本語入力デスクトップのみ対応版 サラで入れると、Ctrl+Space などで日本語入力できないから、 次の手順を踏む(デスクトップ版のみの対応を見込む) 必須要素 root 権限 1. System > Administration > Add/Remove Software 1-1. iBus で検索 1-2. [I…

NoeBundle neocomplete で if lua エラーが起きた記録

Vim

考えられる原因 1. Vim のバージョンが 7.38 未満 かつ 2. Vim の configure (言い回しに疑問有り) に --enable-luainterpre が設定されていなかった。 対策 1-0. 現vimをアンスト。 1-1. Vim をソースからインスト。 1-1-1. hg clone https://vim.googleco…