徒然なるままに

個人の備忘録を中心としたブログです

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
>rails g model example 
で作成したモデルのマイグレーションが
>rake db:migrate
SQLite3::SQLException: table "examples" already exists




のようにエラーで通らなくなった。

原因は
>rails g model example
>rake db:migrate
した後に、db:migrate:rollback あるいは db:migrate:down VERSION=xxxxxxxxx をせずに
>rails d model example
して再度 generate して作り直したから。

要するに db:migrate:down してから rails d model example しておけば、
xxxxxxxxxx_create_examples.rb 内のchangeメソッド中のcreate(down時にはdropになる)が実行され、
テーブルが削除されるのに、それをしなかったということです。


ということで再度 db:migrate を通すために、examplesテーブルを削除してやる必要があります。


解決方法1、sqlite3で直接テーブルを削除する(推奨)
>sqlite3 db/development.sqlite3
sqlite> .tables # テーブル一覧
examples members schema_migrations
sqlite> drop table examples;
sqlite> .tables
members schema_migrations


解決方法2、xxxxxxxxxxx_create_examples.rb内で create table する前に、 drop table する
class CreateExamples < ActiveRecord::Migration
def change
drop_table :examples
create_table :examples do |t|
  ・
  ・
  ・


その後、
>db:migrate
をやれば通りました。

参考元
http://stackoverflow.com/questions/8589874/rake-dbmigrate-an-error-has-occurred-this-and-all-later-migrations-canceled
スポンサーサイト
bundle install で、installing libv8 に異常に時間がかかる(五分くらい?)


libv8は、gemパッケージである'therubyracer'が依存するライブラリであり、
therubyracerを使えばRuby上でJavascriptを動かすエンジンが簡単に実装されるとのこと
Ubuntu(13.04)ではlibv8のインストールに時間がかかるからか
デフォルトでコメントアウト
# gem 'therubyracer'
されているのだが、

rails server を使うときに必要となるので、コメントアウトを外してインストールしなければならない。
だが、とにかくlibv8のインストールに時間がかかる。

この問題の原因、解決方法について以下のブログに丁寧にまとめてあった。

therubyracer 0.11.0 問題まとめ - 自称すーじー。

ここの解決方法としてlibv8の古いバージョンは使用できなくなっているようなので、
therubyracerのバージョンを前のものにしてインストールするという方法をとることにする。

gem 'therubyracer', '0.10.2'

しかし現在のtherubyracerの最新版は0.12.0なので、結構古いものになってしまう。。
気になるようじゃ五分程度なら待ってもいいかな
そもそも0.12.0になってるのに、0.11.0の問題が解決していないってのはどういうことやら・・・
(※追記 2013/09/15)
この記事は最低限の覚え書きとあるように、
現時点ではrvmを使ってrubyからインストールする↓の方法を推奨。
また後でrbenvの方がいいとか言いだしそうですが、今はrvm使ってます。
http://kamiyasu2.blog.fc2.com/blog-entry-41.html

Ruby on Railsの環境を構築する際に最低限インストールするのは
ruby本体、Rails、sqlite3の三つ。
このうちrubyは既にインストールされているものとする。

sqlite3本体のインストールが必要となるほか
rails,sqlite3のgem(RubyGems)パッケージをインストールする。
ちなみに、RubyGemsは、Ruby言語用のパッケージ管理システムであり
Debian用のパッケージ管理システムであるaptのようなものと言えば分かりやすいだろうか。

railsのインストール
sudo apt-get install ruby-dev
sudo gem install rails -v 3.2.1 # -v はversionの指定 vオプションを指定しない場合は最新版(現在は4.0)がインストールされる


sqlite3のインストール
sudo apt-get install sqlite3 libsqlite3-dev
sudo gem install sqlite3


なお、gemではrailsの複数のversionを使用できるようだ。
その場合は、railsプロジェクトの作成に使うrails newコマンドに
以下のようにversionの指定を加えてやる必要がある。
rails _3.2.1_ new hoge


さらに、rvmやrbenvというRubyのバージョン管理システムを使えば
Railsのバージョンだけでなく、Rubyのバージョンも複数インストールことができるらしい。
今は取りあえずrails使えればいいやということで、そこまでは触れず最低限の環境構築の覚書きでした。

kamiyasu

Author:kamiyasu

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。