【问题标题】:Ruby on Rails Tutorial Exercise 3.5Ruby on Rails 教程练习 3.5
【发布时间】:2013-08-30 19:37:19
【问题描述】:

我是编码和 stackoverflow.com 的新手。我一直在关注 ruby​​.railstutorial.org,当我处理第 3.5 节中的高级练习(通过 postgresql 将 sqlite3 替换为 pg gems)时感觉非常好。

我将我的 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 gem 并运行了我的:

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.rb:1:in 'require' : 无法加载此类文件 -- zip/zip (LoadError) 来自 C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.0.0/lib/selenium/webdriver/common/zipper.rb:1:in ''

还有大约 30 个类似的。我尝试在这里搜索一些类似的问题,但找不到任何问题,意识到我对“高级”一无所知,并试图恢复我的所有更改。

我将 gemfile 改回原始文件,将 database.yml 文件改回并尝试再次运行,但仍然收到完全相同的消息。

任何建议都会非常有帮助。我对此很陌生。

【问题讨论】:

  • 您在更改 Gemfile 后是否运行 bundle
  • 是的,我运行了包更新和包安装
  • bundle update 将更新您的 Gemfile 中的 所有内容,您可能不想养成每次都这样做的习惯。看起来像捆绑器问题,因为宝石找不到其他宝石......
  • 尝试给出一个描述性的标题,以触及您的问题的核心。现在,它看起来像是一项家庭作业。
  • 谢谢。有什么建议可以改回来,这样我就可以继续教程了吗?

标签: ruby-on-rails ruby ruby-on-rails-3 postgresql


【解决方案1】:

运行 bundle update 是不安全的,因为这个命令更新 all 你的 gems ,并且新版本的 gems 可能会破坏你的应用程序,这就是你在做 bundle update 时发生的事情,我建议你this article 了解更多关于包更新命令的信息。

我认为你使用 Git ?如果是,那么返回您已经在做的先前提交呢?

git reset --hard commit_name

这方面的一个例子是:

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

提交名称可以使用命令找到:

git log

我认为更方便的另一个解决方案是恢复旧的 Gemfile.lock(Gemfile.lock 是包含旧 gem 版本和每个 gem 的依赖项的文件)。你可以在这里找到如何做到这一点How do you rollback to a previous Gemfile.Lock

【讨论】:

  • @user2733938 如果这可以帮助您解决问题,请单击此答案左侧的验证图标
  • 我遇到了与 TOS 相同的问题:大胆地将我的应用程序移至 postgresql 数据库,然后完全搞砸了一切,不得不弄清楚如何修复它。要是教程提醒我们先“Fork the Repo”就好了,然后像一个棘手的填字游戏一样,在书后提供解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多