ラベル Rails の投稿を表示しています。 すべての投稿を表示
ラベル Rails の投稿を表示しています。 すべての投稿を表示

2013/01/21

railsで日本語を含まないコメントのバリデーション

gem 'moji'
validates_format_of :body,
  :with => Moji.regexp(Moji::ZEN_ALNUM | Moji::ZEN_KANA | Moji::ZEN_KANJI)

rails consoleで全部delete

User.delete @users.map { |u| u.id }

rails consoleでpryを使う方法

config/initializers/pry.rbに下記を記載
begin
  require 'pry'
  module Rails
    class Console
      class IRB
        def self.start
          Pry.start
        end
      end
    end
  end
rescue LoadError => e
  puts e
end

https://github.com/rweng/pry-railsを使えばいいっぽいけど


あとRails4からは下記のようにすれば使えばいいっぽい config/application.rb
# also need to add pry to Gemfile
console do
  require "pry"
  config.console = Pry
end

2012/10/23

railsの複合カラムのユニーク制限

validates_uniqueness_of :hoge_id, :scope => :huga_id
って感じ余裕。

Rackでリダイレクト

   config.gem 'rack-rewrite'
    require 'rack/rewrite'
    config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
      if ENV['RACK_ENV'] == 'production'
       # use Rack::Rewrite do
          r301 %r{.*}, 'http://hoge.com$&', :if => Proc.new {|rack_env|
            rack_env['SERVER_NAME'] != 'hoge.com'
          }
       # end
      end
    end
config/application.rbに上記のような感じで書くとRailsのRackでリダイレクト設定ができます。Herokuを使っていると便利。

ruby on railsでgoogle analyticsのコードを本番だけで挿入

<%= render :partial => ‘layouts/ga’ if RAILS_ENV == ‘production’ %>
こんな感じでレイアウトに記入。パーシャルはapp/views/llayouts/_ga.html.erbみたいな感じでOK。

2012/07/09

herokuで独自ドメインを使う

Custom Domain Add Onを入れてドメインを指定

DNSサイドでは下記を登録する

75.101.163.44
75.101.145.87
174.129.212.2
https://devcenter.heroku.com/articles/custom-domains#dns_setup

rvmとcapistranoを同時に使う時のメモ

Gemfileに追加


gem 'rvm-capistrano'

deproy.rbに追加
set :rvm_ruby_string, 'ree@rails3'                     # Or:
#set :rvm_ruby_string, ENV['GEM_HOME'].gsub(/.*\//,"") # Read from local system

require "rvm/capistrano"                               # Load RVM's capistrano plugin.

https://rvm.io/integration/capistrano/

2012/04/17

bundleでpgをインストールするときのエラー対応

bundleでpgをインストールする時にmacのローカル環境ではpostgreSQLのconfign指定してあげる必要がある。Mac PortsでpostgreSQLを入れている場合下記のような感じで指定できる。

bundle config build.pg --with-pg-config=/opt/local/lib/postgresql91/bin/pg_config

rvmをupdateしたらpowが.rvmrcを読まなくなった

https://github.com/37signals/pow/issues/271
rvm を1.10.3より新しバージョンにしたらpowが動かなくなった。原因としてはpowが.rvmrcを読めなくなっているから。解決策としてはrvmのバージョンを下げるか、.powenvで環境を設定してあげる。

rvmのバージョンを下げる
rvm get 1.10.3

.rvmrcから.powenvを作る
rvm env . -- --env > .powenv

rubyの新しいパッケージが使いたいので後者の方で対応しました。

2011/09/29

RailsでFacebook認証

Gemfileに書きを追記

gem 'oauth'
gem 'facebook_oauth'
gem 'oauth2', '0.4.1'

なぜかoauthは0.4.1以上だと上手く行かなかったのでversionを指定します。あとは各種コントローラーを作ります。もちろん事前にデベロッパー登録はをしておいてCONSUMER_KEYなどは適宜取得したものに変更します。

app/controllers/users_controller.rb
class UsersController < ApplicationController

  CALLBACK_URL    = "http://localhost:3000/users/callback"
  CONSUMER_KEY    = "アプリID"
  CONSUMER_SECRET = "アプリの秘訣"

  def index
  end

  def oauth
    client = FacebookOAuth::Client.new(
      :application_id     => CONSUMER_KEY,
      :application_secret => CONSUMER_SECRET,
      :callback           => CALLBACK_URL
    )
    redirect_to client.authorize_url
  end

  def callback
    @client = FacebookOAuth::Client.new(
      :application_id     => CONSUMER_KEY,
      :application_secret => CONSUMER_SECRET,
      :callback           => CALLBACK_URL
    )
    @client.authorize(:code => params[:code])
  end
  
end
app/views/users/index.html.erb
<%= link_to 'OAuth認証', '/users/oauth' %>
app/views/users/callback.html.erb
<%= @client.me.info %>

http://localhost:3000/usersにアクセスすれば認証ページヘ行きます。

will_paginateのオプション

rails3に移行してkaminariを使っている人も多かも知れませんがwill_pagenateで各種パラメーターを変更する方法。

@@pagination_options = {
:class => 'pagination',
:prev_label => '&laquo; Previous',#前ページリンクの文言
:next_label => 'Next &raquo;',#次ページリンクの文言
:inner_window => 4,#現在ページと「...」の間のリンク数
:outer_window => 1,#「...」とnext_labelの間のリンク数
:separator => ' ', # リンク間の区切り文字
:param_name => :page, #ページ数のパラメーター名
:params => nil, #遷移先URLに付加するパラメーター
:renderer => 'WillPaginate::LinkRenderer',
:page_links => true,
:container => true
}
変更したい所でオーバーライドしてあげればOK

RubyでTwitter認証を使うと便利なtwitter-auth

twitter-authを使うと認証関連を全て受けおってくれます。

% script/generate twitter_auth

を実行するとconfig/twitter_auth.ymlが生成されるのでoauth_consumer_keyやoauth_consumer_secretやcallbackURLを記載します。loginとlogoutのパスは自動で生成されるのでそこにアクセスすると認証されるようになっています。

https://github.com/mbleigh/twitter-auth

2011/08/15

Railsでパンくずリスト

Railsでは簡単にパンくずリストを作れます。 Gemfileに下記の通り記載してbundle install
gem 'crummy'
パンくずリスト表示したい場所に下記の通り記載
<%= render_crumbs %>
あとはアクションで項目を追加していけます。
class ApplicationController < ActionController::Base
  add_crumb 'HOME', '/'
end

ruby-debug19を使う

ruby-debug19を使うとデバッグの際に便利です。追加の仕方は下記の通り。 Gemfileに追加してbundle installのあとデバッグポイントにdebuggerと追加
gem "ruby-debug19"
あとはrails s --debugでサーバーを起動するとdebuggerと記載されたところで止まります。その後は下記のコマンドにて詳細を確認できます。

list : 周辺のソース表示
p 変数名 : 変数の中身を確認できます
cont : 次のbreakpointまで実行

Rails3でタイトルタグを動的に変える

まずはビューのタイトルタグで下記の用に変更
<%= content_for?(:title) ? yield(:title) : "デフォルトタイトル"%>
あとはタイトルを変えたいビューで書き換えてあげる
<% content_for :title do %>
書き換えたいタイトル
<% end %>

gitでコンフリクト

Gitでコンフリクトして、自動でマージできない場合は該当ファイルの一覧が表示されるのでそれを修正すればgit pushできるようになります。


こちらのコマンドでコンフリクトファイルの一覧が表示できます。
git ls-files -u

Railsでフラッシュメッセージ

Railsでエラー文言などのフラッシュメセージを表示させる方法 まずはビューでエラーメッセージを表示させたい所に
<%= flash[:notice] if flash[:notice] %>
コントローラーで文言を入れる
 flash[:notice] = "hogehoge"