2

我按照本教程开始使用 Rails: http ://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec-the_first_application 这看起来非常好。

一开始,作者谈到了版本对宝石和软件的重要性,所以我尽量保持使用完全相同的版本。

我按照教程进行,一切运行良好,安装正常(来自他建议的来源:http ://railsinstaller.org/en )我下载了 ruby​​ 1.9。

安装后,我使用 rails new first_app 创建我的应用程序,将 Gemfile 更改为这个:

source 'https://rubygems.org'
ruby '1.9.3' #In the tutorial is 2.0.0, but changed to match my ruby version, 
             #as specified in the tutorial
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.1'

group :development do
  gem 'sqlite3', '1.3.8'
end

gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

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

当我运行 rails server 命令时,我收到以下错误:

    DEPRECATION WARNING: config.whiny_nils option is deprecated and no longer works.
 (called from block in <top (required)> at D:/rails/first_app/config/environment
s/development.rb:10)
config.eager_load is set to nil. Please update your config/environments/*.rb fil
es accordingly:

  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test enviro
nment)
  * production - set it to true

但是打开 localhost:3000 工作正常。单击“关于您的应用程序的环境”链接,会产生错误

ActiveRecord::ConnectionNotEstablished

Rails.root: D:/rails/first_app

我检查了一下,我的 database.yml 正在使用 sqlite3。

当我在我的应用程序文件夹中运行 rake db:create 时,我得到

耙中止!为数据库适配器指定了“postgresql”,但未加载 gem。添加gem 'pg'到您的 Gemfile。

我认为这三个问题可能是相关的,问题的根源是启动 rails 服务器时的错误消息。我能做些什么来修复它,它可能是 ruby​​ 版本 1.9.3 而不是 2.0.0?

谢谢!

编辑: 在这个链接上,我找到了关于 whiny_nils 弃用问题的解决方案

Rails 4 removed the whiny_nils feature. Read more about it in the ActiveRecord chapter.

To solve the deprecation warning, simply remove any lines that set config.whiny_nils. Rails 3 added the configuration by default in config/environments/development.rb and config/environments/test.rb by default.

不知道为什么创建一个应用程序并使用相同的版本启动它会导致这个问题,但是没关系。1号固定:)

Edit2:在同一个链接中,我通过在我的配置文件中创建此配置并设置一个值来修复 config.eager_load 问题。

活动记录问题仍然存在。

编辑 3:这是我的 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
4

2 回答 2

0

已解决:我的系统环境变量中有一个指向 postgres 数据库的 database_url。很久以前,我在遵循 heroku 教程时已经这样做了。我删除了它,现在它工作正常。

于 2013-11-24T14:59:14.453 回答
-1

我建议一个我认为对您更有效的解决方案:

从除 rails 之外的所有 gem 中删除版本号

它会做 rails 4 和 ruby​​ 2.0 并且对你来说 ruby​​ 2.0 可能会工作。如有必要,将 ruby​​ 版本设置为 1.9.3

现在和将来,这可能对您更有效。
最好避免其他 gem 的所有这些特定版本号,以避免出现....您遇到的版本问题。你想花更少的时间在实际的应用程序、rails 代码、ruby 代码等上。大多数 gem 可以自己找出正确的版本和依赖项。

尝试以这种方式快速执行另一个应用程序(确保在再次发出该 rails new 命令之前先“cd ..”退出此应用程序)。您还将看到,与其他一些较旧的框架相比,开发一个新应用程序是一件非常频繁的事情。

于 2013-11-24T15:05:41.943 回答