カテゴリー : RubyGems

[RubyGems] Could not find xxx in any of the sources

Rails で Gemfile に ransack を 0.7.3 で指定して bundle install したら「Could not find xxx in any of the sources」というエラーが出てしまいました。

# Gemfile

# meta search
gem 'ransack', '0.7.3' #MIT
% cap deploy:cold
...
  * 2013-03-07 21:27:57 executing `bundle:install'
  * executing "cd /srv/myapp/releases/20130307122736 && bundle install --gemfile /srv/myapp/releases/20130307122736/Gemfile --path /srv/myapp/shared/bundle --deployment --quiet --without development test"
    servers: ["example.com"]
    [example.com] executing command
 ** [out :: example.com] Could not find ransack-0.7.3 in any of the sources

ransack-0.7.3 がない?

開発環境ではインストールできているし、ステージング環境でもインストールできていたのに、本番環境の構築時には 0.7.3 はなく、0.7.2 が最新のようでした。

% gem search --remote ransack
 
*** REMOTE GEMS ***
 
ransack (0.7.2)
ransack_abbreviator (0.0.8)
ransack_chronic (1.1.0)
ransack_ffcrm (0.7.1)
ransack_ui (1.1.0)

動作上、問題なかったので ransack のバージョンを下げることで対応しました。

[Ruby] Github に公開している gem を直接インストールする方法

Github に公開している gem を直接インストールする方法をメモ。

■ Gemfile

gem 'sunspot_rails', :git => 'git@github.com:bakorer/sunspot.git', :branch => "solr-3.6.1"

参考情報

rubygems – Install Gem from Github Branch? – Stack Overflow

[Ruby on Rails] Devise のログイン処理のエラーメッセージを表示する方法

Ruby on Rails にて、Devise のログイン処理のエラーメッセージを表示させるように、下記のコードを追加しました。

■ app/views/devise/sessions/new.html.haml

  -if alert
    #error_explanation
      %h2 Please check messages below:
      %ul
        %li=alert

以上です。

【参考】

Rails – Devise – Error messages when signing in? – Stack Overflow はてなブックマーク - Rails - Devise - Error messages when signing in? - Stack Overflow

[Ruby on Rails] Devise で 保存失敗時に例外を発生させる update_without_password! メソッドを作成しました

Ruby on Rails の Devise にて、保存失敗時に例外を発生させる update_without_password! メソッドを作成しました。

Devise で定義されている update_without_password メソッドでは、保存処理の成功・失敗によって true, false が帰ってきます。

例外を投げる update_without_password! メソッドも定義されているのかと思いきや、無かったので作成しました。

class User < ActiveRecord::Base
  def update_without_password!(params, *options)
 
    if params[:password].blank?
      params.delete(:password)
      params.delete(:password_confirmation) if params[:password_confirmation].blank? 
    end
 
    clean_up_passwords
    update_attributes!(params, *options)
  end
end

以上です。

・参考:
deviseで現在のパスワード無しでuserを更新する – komagata
はてなブックマーク - komagata

[Ruby on Rails] 権限管理・認可を扱う「cancan」が便利

Ruby on Rails にて、権限管理や認可を扱う「cancan」という gem を使ってみました。

ryanb/cancan

カンタンに導入できて、かなり便利です。

使い方は、下記の記事を参考にしました。ありがとうございます。

cancan でモテカワ♥愛され権限管理 « blog.udzura.jp

Rails3.0 で Devise と CanCan を動かす – dimrosの日記

ASCIIcasts – “Episode 192 – Authorization with CanCan”

以上です。