カテゴリー : Ruby on Rails

[Ruby on Rails] DB を初期化・リセットする方法 ~ rake db:reset と rake db:migrate:reset

Ruby on Rails で、データベース (DB) リセットする方法を2通りご紹介します。

Ruby on Rails

  1. rake db:reset
  2. rake db:migrate:reset

続きを読む

Ruby on Rails + Rspec + Capybara 初期設定

Ruby on Rails 5 で Rspec と Capybara の初期設定をしてテストケースを実行するまでの手順をご紹介します。

Ruby on Rails

続きを読む

[Ruby on Rails] favicon_link_tag で favicon.ico を設定する方法

Ruby on Rails の favicon_link_tag ヘルパーメソッドを使って favicon.ico を設定する方法をご紹介します。

Ruby on Rails

続きを読む

[Ruby on Rails] 常に HTTPS 接続する設定は config.force_ssl = true

Ruby on Rails にて、常に HTTPS/SSL 接続する設定方法をご紹介します。

Ruby on Rails

続きを読む

[Ruby on Rails] erb2haml を使って .erb ファイルを .haml へ変換する

Ruby on Rails で erb2haml を使って .erb ファイルを .haml へ変換したので、その方法をご紹介します。

Ruby on Rails

続きを読む

[Ruby on Rails 4] group :assets do … end は廃止

Ruby on Rails 4 から Gemfile に group :assets do … end と書くのは廃止になったそうです。

Rails 4.0 removed the assets group from Gemfile. You’d need to remove that line from your Gemfile when upgrading.

Ruby on Rails Guides


参考情報

Rails 4はgroup :assetsがなくなった。 – iiirc

Ruby on Rails4 + Mongoid + RSpec

Ruby on Rails4 + Mongoid + RSpec の環境構築メモ。

gem install rails --version 4.0.1
rails new myapp --skip-active-record --skip-test-unit
cd myapp
# Gemfile
gem 'mongoid', git: 'https://github.com/mongoid/mongoid.git'
rails g mongoid:config
      create  config/mongoid.yml
rails g rspec:install
% git diff
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 943bc19..9b7b0ef 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -13,6 +13,19 @@ Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
 ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
 
 RSpec.configure do |config|
+  ## Mongoid
+  config.before(:suite) do
+    DatabaseCleaner[:mongoid].strategy = :truncation
+  end
+
+  config.before(:each) do
+    DatabaseCleaner[:mongoid].start
+  end
+
+  config.after(:each) do
+    DatabaseCleaner[:mongoid].clean
+  end
+
   # ## Mock Framework
   #
   # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
@@ -22,12 +35,12 @@ RSpec.configure do |config|
   # config.mock_with :rr
 
   # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
-  config.fixture_path = "#{::Rails.root}/spec/fixtures"
+  # config.fixture_path = "#{::Rails.root}/spec/fixtures"
 
   # If you're not using ActiveRecord, or you'd prefer not to run each of your
   # examples within a transaction, remove the following line or assign false
   # instead of true.
-  config.use_transactional_fixtures = true
+  # config.use_transactional_fixtures = true
 
   # If true, the base class of anonymous controllers will be inferred
   # automatically. This will be the default behavior in future versions of
diff --git a/config/application.rb b/config/application.rb
index 7c9e566..9694074 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -4,7 +4,7 @@ require File.expand_path('../boot', __FILE__)
 # require "active_record/railtie"
 require "action_controller/railtie"
 require "action_mailer/railtie"
-require "sprockets/railtie"
+# require "sprockets/railtie"
 # require "rails/test_unit/railtie"
 
 # Require the gems listed in Gemfile, including any gems
diff --git a/config/initializers/mongoid.rb b/config/initializers/mongoid.rb
new file mode 100644
index 0000000..e400231
--- /dev/null
+++ b/config/initializers/mongoid.rb
@@ -0,0 +1 @@
+Mongoid.load!(Rails.root.to_s + "/config/mongoid.yml")

参考情報

Mongoid: Installation

Getting Started Rails 4 with MongoDB | Just Some More Dev Ideas

Using Mongoid with Rspec

Mongoid: Installation [Configuration]

[Ruby on Rails] PDFKit が NoMethodError (undefined method `chomp’ for nil:NilClass): というエラーで動かない

Ruby on Rails で PDFKit を使ってまして、CentOS で動かないという状況に陥りました。

NoMethodError (undefined method `chomp' for nil:NilClass):
  pdfkit (0.5.3) lib/pdfkit/configuration.rb:20:in `wkhtmltopdf'
  pdfkit (0.5.3) lib/pdfkit/pdfkit.rb:31:in `initialize'
  pdfkit (0.5.3) lib/pdfkit/middleware.rb:21:in `new'
  pdfkit (0.5.3) lib/pdfkit/middleware.rb:21:in `call'
  warden (1.2.1) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.1) lib/warden/manager.rb:34:in `catch'
  warden (1.2.1) lib/warden/manager.rb:34:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'

下記を参考に直してみても、RuntimeError pdfkit (0.5.3) lib/pdfkit/pdfkit.rb:73:in `to_pdf’ というエラーが出る。

NoMethodError · Issue #82 · pdfkit/pdfkit

原因は2つあって、1つ目はApacheにBasic認証を設定していたこと。

2つ目は /usr/local/bin へ path を通すことで解決しました。

path を通す方法は下記のとおりです。

まず、 /usr/local/bin/ruby_wrapper に下記の内容を記載して保存します。

#!/bin/sh
export PATH="$PATH:/usr/local/bin" 
exec "/usr/local/bin/ruby" "$@"

次に、Apache の httpd.conf で Passenger で使う Ruby の Path を ruby_wrapper に変更します。

PassengerRuby /usr/local/bin/ruby_wrapper

以上です。

[Ruby on Rails] ActionDispatch::Cookies::CookieOverflow error

Ruby on Rails で flash に大量の文字列を詰め込むと ActionDispatch::Cookies::CookieOverflow error が発生しました。

Raised when storing more than 4K of session data.

ActionDispatch::Cookies::CookieOverflow

解決方法は、セッションを Cookie ではなく ActiveRecord や Redis などで置き換えることです。

Ruby on Rails ActionDispatch::Cookies::CookieOverflow error – WILT

[Ruby on Rails][Haml] text mail 内で改行するにはバックスラッシュを使う

Ruby on Rails + Haml で、text mail 内で改行するには、バックスラッシュを使います。

Dear
= @user.name,
\
Your username is
= @user.username
\
\
\
\
Your status is
= @user.status

[参考]:HAML: Line breaks in text mail