Ruby on Rails

Ruby on RailsでBULK INSERT

やりたいこと RailsでBULK INSERTしたい。 方法 Gem「activerecord-import」を使う。 activerecord-importインストール。 $ vi Gemfile gem 'activerecord-import' $ sudo bundle install importメソッドを使用してBULK INSERT reg_tweets = [] tweets.each …

Ruby on RailsでURLにid以外の任意の項目を指定したい

やりたいこと Railsで機械的に振られたidではなく、モデル的に意味のある値(ユーザ名とか話数とか)でアクセスできるようにしたい。 方法 URLを変更したいモデルのto_paramメソッドをオーバーライド to_paramメソッドをオーバーライド $ vi app/models/chapte…

Ruby on Railsでバッチ処理

やりたいこと Rails上でバッチ処理を実行したい。 方法 rails runnerコマンドを使う。 rails runnerコマンドで実行するプログラムの作成 $ vi lib/tasks/anime_tweets_collect_task.rb # coding: utf-8 require 'anime_tweets_searcher' require 'anime_twee…

Ruby on RailsでログにタイムスタンプとプロセスIDを表示

やりたいこと ログ解析のためにタイムスタンプとプロセスIDを表示したい。 方法 タイムスタンプとプロセスIDを表示するためのログフォーマットクラスを定義 $ vi config/environment.rb # Load the rails application require File.expand_path('../applicat…

Ruby on Railsでasset pipeline関連のログを出力させない方法

やりたいこと ログが見辛くなるので下記の様なasset pipeline関連のログを出力させないようにしたい。 Started GET "/assets/scaffolds.css?body=1" for 219.118.179.251 at 2013-04-24 16:28:05 +0900 Served asset /scaffolds.css - 304 Not Modified (2ms…

Ruby on RailsでJSONをオブジェクトのままJavaScriptに渡す方法

やりたいこと Ajaxの非同期通信により取得したJSONデータをオブジェクトのままViewのJavaScriptに渡したい。 方法 rawメソッドを使用する。 ControllerにてDBから取得したデータを変数に格納。 $ vi app/controllers/chapters_controller.rb def tweets @twe…

jQueryでAjaxの通信開始/終了のイベントをハンドリングする方法

やりたいこと jQueryでAjaxの通信開始/終了のイベントをハンドリングし、Ajaxによる通信中であることがユーザに分かるようにしたい。 方法 jQueryのajaxStart/ajaxCompleteメソッドを使用する。 JSファイルにAjaxの通信開始/終了時の処理を記載。※applicatio…

Ruby on Rails 3 でAjaxを扱うための基礎

やりたいこと Rails3でAjaxを扱うための基礎として、メソッドをAjaxで呼び出し、取得データをViewに反映するところまで。 方法 「:remote => true」によりlink,formをAjax化し、Ajax用のerbファイルを作成する。 linkをAjax化 $ vi app/views/chapters/show.…

Ruby on Railsで独自のルーティングとメソッドを追加したい

やりたいこと Ruby on Railsでresourcesを使用しない独自のルーティングと、それに対応するメソッドを追加したい。 方法 route.rbにおいてmemberブロックを使用してルーティング追加 この例では各チャプター毎にツイートの一覧を返却する「tweets」ルーティ…

Ruby on Railsで親子関係にあるモデルのルーティング設定

やりたいこと Ruby on Railsで親子関係にあるモデルのルーティングを設定したい。 方法 route.rbにおいてモデルを下記の様にネストさせる。 $ vi config/route.rb TestApplication::Application.routes.draw do resources :animes do resources :chapters en…

Ruby on Railsで子テーブルのデータをソートする方法

やりたいこと Viewで@chapter.tweets的な感じで子テーブルのデータを一覧で表示する際にデータをソートしたい。 方法 親モデルのhas_manyにorder byを指定 $ vi app/models/chapter.rb class Chapter < ActiveRecord::Base has_many :tweets, :order => 'twe…

ActiveRecordをRails以外から使用する方法

やりたいこと ActiveRecordをRails以外の普通のスクリプトとかから使いたい。 方法 スクリプトファイル内でRailsの設定系のファイルを読み込む。 #coding: utf-8 require 'active_record' require '/railsdir/config/boot' require '/railsdir/config/enviro…

Ruby on Railsでアプリ全体にベーシック認証をかける方法

やりたいこと Railsでアプリ全体にベーシック認証をかけたい。 方法 アプリ共通のコントローラーにベーシック認証の設定を追加 $ app/controllers/application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery # …

Ruby on RailsでDBにユニーク制約を付与する方法

やりたいこと RailsでDBにユニーク制約を付与したい。 方法 マイグレーションファイルを新規作成してユニークインデックスを追加 ユニークインデックス追加用のマイグレーションファイルを作成 $ rails generate migration AddIndexAnimeIdAndChapterToChapt…

Ruby on RailsでタイムゾーンにJSTを使用する方法

やりたいこと タイムゾーンにJSTを使用したい。 RailsではDB保存はUTCで行い、表示の時だけJSTにするというのが通常の方法らしいが、DBの値を元に障害調査する時など表示とDBの値が違うのは何かと面倒であるため、DB保存と表示どちらもJSTにする。 方法 appl…

Ruby on RailsでプルダウンメニューをDBの値から作成する方法

やりたいこと Ruby on RailsでプルダウンメニューをDBの値から生成したい。 各話テーブルのレコードを作成する際に、親となるアニメをプルダウンから選択したい場合など。 方法 collection_selectを使用 Viewのerbファイルにて下記の様に記載 <%= f.collecti…

Ruby on Railsで外部キー設定

Ruby on Railsで外部キー設定 スムーズに行くかと思いきや、地味にいろいろやることがある。 ちょっとRailsを過信しすぎたかも。 作りたいテーブルのリレーションについて アニメテーブルの1レコードに各話テーブルの複数レコードが紐付く やったこと 各モデ…

Ruby on RailsからPostgreSQLを使う

Ruby on RailsからPostgreSQLを使う RailsもPosgtreSQLも入ったので連携させてみる。 やったこと DBにPostgreSQLを指定してアプリ作成 アプリ作成 $ rails new test_apl -d postgresql Gem関連でエラー発生。Gemのインストールはrootで実施する必要があるの…

さくらVPS上にRuby on Railsインストール

さくらVPS上にRuby on Railsインストール せっかく借りてるのでRuby on Railsの環境構築してみる。 やったこと Ruby on Railsインストール opensslパッケージインストール。依存関係によりzlibなども同時にインストールされる。本来opensslのインストールはR…