1、安装rails工具
在安装rails之前需要先安装Ruby和SQLite3.
检查Ruby是否安装的方式是在命令行中执行如下命令:
ruby -v
#如果已经安装了的话,结果应该是ruby 2.5.0。安装不同的版本,出现的是不同的数字
在windows上快速安装的方式是使用:Rails Installer
在windows下,还要安装 Ruby Installer Development Kit
实践中发现只使用RailsIntaller安装就可以了。
第2种安装方式比较靠谱,先安装Ruby,再使用rubygem这个工具安装Rails,这样安装得到的Rails可以是最新的。
2、创建rails应用
Rails中使用多个脚本工具使开发变得简单,其中一个脚本工具就是new application generator。
使用方式是在执行如下命令:
rails new blog
结果就是生成一个blog文件夹,代表一个名为blog的应用。
3、启动服务器
以上就创建一个名为blog的rails应用了。为了使应用能跑起来,需要启动web服务器,意思是使用web server来启动这个blog应用。命令如下:
rails server
对了,在执行此命令时,需要切换到blog文件夹下。
在执行命令启动服务时,出现如下错误:
Could not find gem 'puma (~> 3.7) x86-mingw32' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
意思是缺少一个gem,那gem到底是什么东西呢?类似于一个组件吗?原来文中有解释:Puma, a web server distributed with Rails by default。它是一个随着rails发布的一个服务器程序。
原来在执行rails new blog生成应用程序时,命令一直没有执行完,如下图:
![](https://img.haomeiwen.com/i1828332/079e2015e698d53c.png)
最后正常启动的结果如下:
PS E:\邓德新\BuildWeb\blog> rails server
=> Booting Puma
=> Rails 6.0.0 application starting in development
=> Run `rails server --help` for more startup options
*** SIGUSR2 not implemented, signal based restart unavailable!
*** SIGUSR1 not implemented, signal based restart unavailable!
*** SIGHUP not implemented, signal based logs reopening unavailable!
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.5-p114), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
显然,tcp://localhost:3000这里输出的是错误的,正确是应该是:http://localhost:3000
4、添加Controller和Action
为了响应某个具体的请求,比如http://localhost/Home/Index,需要有名为Home的Controller和名为Index的Action。
添加Controller和Action的命令是:
rails generate controller Welcome index
其中Welcome是Controller的名字,而index是Action的名字。
伴随着Controller与Action的创建,同时创建的还有View;Controller是由一个文件承载,路径是“app/controllers/welcome_controller.rb”;而View的路径是“app/views/welcome/index.html.erb”。
5、设置应用程序的根路径的Home Page
其实是设置一条路由,把对地址Http://localhost/的请求指向一个Controller的一个Action,添加路由的位置是“config/routes.rb”。文件config/routes.rb中保存是各种路由信息。如果请求的地址没有路由信息会怎么样?
网友评论