2013-08-30 110 views
1

我是編程和stackoverflow.com的新手。我一直在跟隨ruby.railstutorial.org,當我解決第3.5節中的高級練習時(使用Postgresql中的pg gems替換sqlite3),感覺非常好。Ruby on Rails教程練習3.5

我改變了我的Gemfile來自:

source 'https://rubygems.org' 
ruby '1.9.3' 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.0' 

group :development, :test do 
    gem 'sqlite3', '1.3.7' 
    gem 'rspec-rails', '2.13.1' 
end 

group :test do 
    gem 'selenium-webdriver', '2.0.0' 
    gem 'capybara', '2.1.0' 
end 

gem 'sass-rails', '4.0.0' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.0' 
gem 'jquery-rails', '2.2.1' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

group :production do 
    gem 'pg', '0.15.1' 
    gem 'rails_12factor', '0.0.2' 
end 

source 'https://rubygems.org' 
ruby '1.9.3' 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.0' 
gem 'pg', '0.15.1' 

group :development, :test do 
    gem 'rspec-rails', '2.13.1' 
end 

group :test do 
    gem 'selenium-webdriver', '2.0.0' 
    gem 'capybara', '2.1.0' 
end 

gem 'sass-rails', '4.0.0' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.0' 
gem 'jquery-rails', '2.2.1' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

group :production do 
    gem 'rails_12factor', '0.0.2' 
end 

我也改變了我的database.yml文件:

# SQLite version 3.x 
# gem install sqlite3 
# 
# Ensure the SQLite 3 gem is defined in your Gemfile 
# gem 'sqlite3' 
development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 

包括密碼/端口與PG postgresql不是sqlite3。 我安裝的pgAdmin III和PostgreSQL 9.2 我捆綁更新並安裝了一些PG寶石和跑我:

bundle exec rspec spec/requests/static_pages_spec.rb 

其停止工作,即使它所有的這些改變之前正確工作。 這些是錯誤消息:

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper。 /RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.0: - RB:1:1:在 '要求' 選自C拉鍊/拉鍊(LoadError) 不能加載這樣的文件。 0/LIB /硒/ webdriver的/普通/ zipper.rb:1:在 ''

和約30更類似於那些。我試着在這裏搜索一些類似的問題,但找不到任何東西,意識到我爲了「高級」而頭腦發熱,試圖恢復所有的變化。

我改變了我的Gemfile回原來和我的database.yml文件回來,並試圖再次運行,但我仍然得到確切的同樣的信息。

任何意見將是非常有益的。我對此很新。

+2

你運行'改變你的Gemfile後bundle'? –

+0

是的,我運行了軟件包更新和軟件包安裝 – Dronny

+0

'軟件包更新'將更新Gemfile中的* everything *,你可能不想養成每次都這樣做的習慣。看起來像捆綁商的問題,因爲寶石找不到其他寶石... –

回答

2

這是不安全的運行包更新,因爲此命令更新所有你的寶石和寶石的新版本可能會破壞您的應用程序,這是什麼情況,當你在做bundle update,我建議你this article更瞭解包更新命令。

我想你使用git?如果是的話那麼回到之前的提交你已經在做什麼?

git reset --hard commit_name 

所以這樣的一個例子是:

git reset --hard f460cb...... 

提交名稱可以使用發現命令:

git log 

另一種解決方案,我認爲更方便是恢復你的舊的Gemfile.lock(Gemfile.lock是包含你的舊寶石版本和每個寶石的依賴關係的文件)。你可以找到如何做到這一點這裏How do you rollback to a previous Gemfile.Lock

+0

非常感謝。解決了我的問題 – Dronny

+0

@ user2733938如果這有助於您解決問題,請點擊此答案左側的驗證圖標 – medBo

+0

我遇到了與TOS相同的問題:大膽地將我的應用移至postgresql數據庫,然後徹底搞砸了所有內容並必須弄清楚如何解決它。如果只有教程提醒我們首先要「分叉回購」,那麼就像一個艱難的縱橫字謎一樣,在本書的後面提供解決方案。 –