カテゴリー : Ruby

[Ruby] rvm pkg install zlib → [ERROR] There is no checksum for xxx

RVM で zlib インストールしようとしたら、チェックサム無いってエラーでインストールできないときの対処方法をメモ。

# rvm pkg install zlib
Fetching zlib-1.2.7.tar.gz to /usr/local/rvm/archives
There is no checksum for 'http://prdownloads.sourceforge.net/libpng/zlib-1.2.7.tar.gz' or 'zlib-1.2.7.tar.gz', it's not possible to validate it.
If you wish to continue with unverified download add '--verify-downloads 1' after the command.
 
 
Please note that it's required to reinstall all installed rubies:
 
    rvm reinstall all --force
    rvm all-gemsets do rvm gemset pristine

下記のようにインストールすればOKです。

rvm --verify-downloads 1 pkg install zlib 
rvm get head

以上です。

【参考】

ruby – RVM pkg install checksum error – Stack Overflow

[RVM] Ruby version を Update する方法

RVM でインストールした Ruby のバージョンをアップデートする方法をご紹介します。(最終更新日:2020年2月21日)

Ruby

続きを読む

[Ruby on Rails] Rails.env で production/development 環境か判定する

Ruby on Rails にて production/development 環境などの判定は Rails.env で行います。

Rails.env を使った production/development 環境判定のサンプルコード

if Rails.env == 'production'
  // production
elsif Rails.env == 'staging'
  // staging
elsif Rails.env == 'development'
  // development
elsif Rails.env == 'test'
  // test
end

こういう書き方もできるみたいです。

puts "Rails.env is production" if Rails.env.production?

以上です。

[Ruby on Rails] Amazon SES (Simple Email Service)の設定方法

Ruby on Rails 3.2.5 にて、Amazon SES (Simple Email Service)を使ってメール送信ができるようにする設定方法をメモ。

■ config/environments/production.rb

  # Amazon SES
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host: 'your-domain.example.com' }
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.smtp_settings = {
    :address              => "email-smtp.us-east-1.amazonaws.com",
    :port                 => 465,
    :domain               => 'your-domain.example.com',
    :user_name            => 'XXXXXXXXXXXXXXXXXX',
    :password             => 'SGNIHinBVUSHLGHVIUSHIRHIIHFIL',
    :authentication       => :plain
  }

■ config/initializers/amazon_ses.rb

module Net
  class SMTP
    def tls?
      true
    end
  end
end

■ Gemfile

# Amazon SES
gem "aws-ses", "~> 0.4.4", :require => 'aws/ses'

drewblas/aws-ses · GitHub はてなブックマーク - drewblas/aws-ses · GitHub

以上です。

【参考】

Amazon SES SMTP Emails using Rails 3.1 in Three Easy Steps | | ReadyPulse BlogReadyPulse Blog はてなブックマーク - Amazon SES SMTP Emails using Rails 3.1 in Three Easy Steps | | ReadyPulse BlogReadyPulse Blog

EOFError error trying to use Amazon SES via SMTP with Rails 3.1.3 – Stack Overflow はてなブックマーク - EOFError error trying to use Amazon SES via SMTP with Rails 3.1.3 - Stack Overflow

Amazon SES(Simple Email Service)でメールを送ってみなイカ? | Pocketstudio.jp log3 はてなブックマーク - Amazon SES(Simple Email Service)でメールを送ってみなイカ? | Pocketstudio.jp log3

Amazon SESでメールを送ったときにGmailでvia email-bounces.amazonses.comって表示されないようにする – Startup Reality はてなブックマーク - Amazon SESでメールを送ったときにGmailでvia email-bounces.amazonses.comって表示されないようにする - Startup Reality

Amazon’s Simple Email Service on rails using aws-ses and devise – Tee Parham’s posterous はてなブックマーク - Amazon's Simple Email Service on rails using aws-ses and devise - Tee Parham's posterous

一番いいメール配信を頼む « サーバーワークス エンジニアブログ はてなブックマーク - 一番いいメール配信を頼む « サーバーワークス エンジニアブログ

[Ruby on Rails] ActiveRecord で行ロックをかける方法(楽観的ロック、悲観的ロック)

Ruby on Rails にて、ActiveRecord で行ロックをかける方法を調べたので、参考にした記事をメモ。

ロックの方法は、大きく分けて「楽観的ロック」と「悲観的ロック」の2つがあります。

■ 楽観的ロック

ずくなし。 : Ruby on Railsで楽観的ロックをかける – livedoor Blog(ブログ) はてなブックマーク - ずくなし。 : Ruby on Railsで楽観的ロックをかける - livedoor Blog(ブログ)

テストの実行環境の違いを意識する – ザリガニが見ていた…。 はてなブックマーク - テストの実行環境の違いを意識する - ザリガニが見ていた...。

■ 悲観的ロック

Railsで悲観的ロックできないの? – LazyLoadLife はてなブックマーク - Railsで悲観的ロックできないの? - LazyLoadLife

■ 両方(楽観的ロック・悲観的ロック)

ActiveRecordで行ロックをかける方法 | KRAY Inc はてなブックマーク - ActiveRecordで行ロックをかける方法 | KRAY Inc

楽観的ロックと悲観的ロック – Super Neurotic Junction はてなブックマーク - 楽観的ロックと悲観的ロック - Super Neurotic Junction

以上です。

[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

[RVM] Ruby on Rails のバージョンを管理する方法

Ruby のバージョン管理システム RVM で Ruby on Rails のバージョンを管理する方法をご紹介します。

RVM

続きを読む

[Ruby on Rails] JavaScript や CSS ファイル内で画像を読み込むときのパス(Path)の指定方法

Ruby on Rails にて、JavaScript や CSS ファイル内で画像を読み込むときのパス(Path)の指定方法を調べたのでメモ。

ちなみに、 画像ファイルへのPathはこんな以下のとおりです。

$ tree
.
├── app
│   ├── assets
│   │   ├── images
│   │   │   └── thickbox
│   │   │       ├── loadingAnimation.gif
│   │   │       └── macFFBgHack.png

画像ファイルが、
app/assets/images/thickbox/loadingAnimation.gif
にある場合、Pathは、

/assets/images/thickbox/loadingAnimation.gif

ではなく、images抜きの

/assets/thickbox/loadingAnimation.gif

というように指定しないといけません。

jQuery ライブラリ ThickBox のJavaScript、CSSファイル内で画像ファイルを指定している箇所を参考に変更箇所の例を書いてみました。

・参考:[jQuery] カンタンにDialogを表示できる「ThickBox」の使い方・参考記事まとめ | CodeNote.net はてなブックマーク - [jQuery] カンタンにDialogを表示できる「ThickBox」の使い方・参考記事まとめ | CodeNote.net

■ thickbox-compressed.js

・変更前

var tb_pathToImage = "images/loadingAnimation.gif";

・変更後

var tb_pathToImage = "/assets/thickbox/loadingAnimation.gif";

■ thickbox.css

・変更前

.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;}

・変更後

.TB_overlayMacFFBGHack {background: url(/assets/thickbox/macFFBgHack.png) repeat;}

以上です。

【参考】

Rails 3.1 and Image Assets – Stack Overflow はてなブックマーク - Rails 3.1 and Image Assets - Stack Overflow

[Ruby on Rails] 入力フォームに時刻をフォーマットして初期値をセットする方法

Ruby on Rails 3.2.3 にて、入力フォームに時刻をフォーマットして初期値をセットする方法を調べたのでメモ。

フォームの一部を抜粋。下記のような感じで書く。

# app/views/articles/_article_form.html.haml
  %tr
    %th Published Time
    %td
      = f.text_field :published_at, value: (f.object.published_at.blank? ? '' : f.object.published_at.strftime('%Y/%m/%d %H:%M')

以上です。


参考情報

逆引きRuby – 日付と時刻

Format DateTime in Text Box in Rails – Stack Overflow