Ruby on rails RubyonRails教程练习3.5

Ruby on rails RubyonRails教程练习3.5,ruby-on-rails,ruby,ruby-on-rails-3,postgresql,Ruby On Rails,Ruby,Ruby On Rails 3,Postgresql,我是新来的编码和stackoverflow.com。我一直关注ruby.railstutorial.org,当我处理第3.5节中的高级练习(通过postgresql将sqlite3替换为pg gems)时,感觉非常好 我已将文件从以下位置更改为: source 'https://rubygems.org' ruby '1.9.3' #ruby-gemset=railstutorial_rails_4_0 gem 'rails', '4.0.0' group :development, :te

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

我已将文件从以下位置更改为:

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
# 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

我还将我的database.yml文件更改为:

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
# 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 isntead的sqlite3。 我安装了pgadmin III和postgresql 9.2 我捆绑更新并安装了一些pg gems并运行了我的:

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:在“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/zippers.rb:1:in''

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

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


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

运行bundle update是不安全的,因为这个命令更新了所有您的gems,并且gems的新版本可能会破坏您的应用程序,这是您在执行
bundle update
时发生的情况,我建议您进一步了解bundle update命令

我想你用Git?如果是,那么返回到您已经在执行的上一个提交如何

git reset --hard commit_name
这方面的一个例子是:

git reset --hard f460cb......
提交名称可以使用以下命令找到:

git log

我认为更方便的另一个解决方案是恢复您的旧Gemfile.lock(Gemfile.lock是包含您的旧gems版本和每个gem的依赖项的文件)。您可以在此处找到如何执行此操作

更改GEM文件后是否运行了
bundle
?是的,我运行了bundle update,bundle install
bundle update
将更新GEM文件中的所有内容,您可能不想养成每次都这样做的习惯。看起来像是捆绑包问题,因为gems找不到其他gems…请尝试给出一个描述性标题,该标题指向问题的核心。现在,看起来像是家庭作业。谢谢。有什么建议可以修改回去让我继续教程吗?@user2733938如果这有助于你解决问题,请单击此答案左侧的验证图标。我遇到了与TOS相同的问题:大胆地将我的应用程序移动到postgresql db,然后完全搞乱了一切,必须找出解决方法。如果只是教程提醒我们先“分叉回购”,然后像一个艰难的填字游戏一样,在书的后面提供解决方案。