重返Ruby之路 Day21 --- Rails6学习

229 阅读1分钟

Rails的三种环境

Rails 的应用程序预设提供了三种不同的执行模式: 

  • development environment 开发模式,用在你的开发的时候 
  • test environment 测试模式,用在执行测试程式时 
  • production environment 正式上线模式,用在实际的上线运作环境 Rails 控制台默认使用的是“开发环境”:
$ rails console
Loading development environment
>> Rails.env
=> "development"
>> Rails.env.development?
=> true
>> Rails.env.test?
=> false

如前所示,Rails 对象有一个 env 属性,属性上还可以调用各环境对应的布尔值方法,例如,Rails.env.test?,在“测试环境”中的返回值是 true,而在其他两个环境中的返回值则是 false

如果需要在其他环境中使用控制台(例如,在“测试环境”中进行调试),只需把环境名称传递给 console 命令即可:

$ rails console test
Loading test environment
>> Rails.env
=> "test"
>> Rails.env.test?
=> true

Rails 本地服务器和控制台一样,默认使用“开发环境”,不过也可以在其他环境中运行:

$ rails server --environment production

如果要在“生产环境”中运行应用程序,先要提供生产环境数据库。在“生产环境”中执行 rake db:migrate 命令可以生成“生产环境”所需的数据库:

$ bundle exec rake db:migrate RAILS_ENV=production

撤销操作

即使再小心,在开发 Rails 应用的过程中也可能会犯错。幸好 Rails 提供了一些工具能够帮助我们还原操作。

举例来说,一个常见的情况是更改控制器的名称,这时你得删除生成的所有文件。生成控制器时,除了 控制器文件本身之外,Rails 还会生成很多其他文件。撤销生成的文件时不仅仅要删除控制器文件,还要删除不少辅助文件。在Rails中,可以使用rails destroy命令完成撤销操作。一般来说,下面这两个命令是相互抵消的:

      $ rails generate controller StaticPages home help
      $ rails destroy  controller StaticPages home help
$ rails generate model User name:string email:string

这个操作可以使用下面的命令撤销:

$ rails destroy model User

(在这里,我们可以省略命令行中其余的参数。)

对模型来说,还涉及到撤销迁移。迁移通过下面的命令改变数据库的状态:

$ rails db:migrate 我们可以使用下面的命令撤销前一个迁移操作:

$ rails db:rollback 如果要回到最开始的状态,可以使用:

$ rails db:migrate VERSION=0 把数字 0 换成其他数字就能回到相应的版本,这些版本数字是按照迁移执行的顺序排列的。