Ubuntu11.04でmysql2のbundle installが失敗する


この記事の所要時間: 338
  • Ubuntu11.04
  • Rails3.0.7

Ubuntu固有の問題

パッケージ見つけるの大変。

先生、今度はrake db:createが失敗します

bundle installは無事成功しました。でもrake db:createをやろうとするとエラーが発生します。

以下の記事を見つける。

The problem is because you are trying to install the lastet version of mysql2 wich is incompatible with rails 3.0.x version

SO, in your Gemfile change the line for mysql2 gem for this:

gem ‘mysql2’, ‘< 0.3’

then bundle command

and then when the new mysql2 gem file ( i think is 0.2.7 ) you will solve the problem

mysql – version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it's now part of Rails 3.1 – Stack Overflow

どうやらmysql2アダプタの0.3系のバージョンはRails 3.1向けに作られたものらしい。Rails 3.0系を使う場合にはmysql2の0.2系を使ってねということらしい。

Gemfileのgem ‘mysql2’の行を以下のように変更して再度bundle installすれば解決。

シンジ「それでも動かないよ!」

Ruby 1.8.7系を死傷している場合は以上で終了ですが、Ubuntu 11.04にRails 3.0.7をインストール後にやったことメモ – ありの日記でご指摘いただきました。
どうやらRuby 1.9.2でRake 0.9.0.beta.4を使用すると以下のような現象が出るらしいです。

ruby on rails 3 – Undefined method ‘task’ using rake 0.9.0 – Stack Overflowによると2つの解決方法があるようです。

一番簡単な方法

Rakefileを以下のように変更する。

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require File.expand_path('../config/application', __FILE__)
require 'rake'

module ::YourAppName
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end

YourAppName::Application.load_tasks

もう少ししっかりした方法

  1. gem uninstall rake -v 0.9で0.9プリベータ版のrakeをアンインストール
  2. Gemfilegem 'rake', '~> 0.8.7'という制約を書き加える
  3. bundle updateして終了

旧はてなダイアリーのエントリの加筆修正は余力があったらということで。。。

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP