创建一个新应用
在本节课中,我们将学习如何创建一个新的 Rails 应用程序。
当你安装 Rails 框架时,还会获得一个全新的命令行工具 rails,它用于创建每个新的 Rails 应用程序。
为什么要使用这个工具?我们不能直接在喜欢的编辑器中手动编写代码,从零开始构建应用吗?当然可以。毕竟,Rails 应用本质上只是 Ruby 源代码。然而,Rails 在幕后做了大量工作,使我们的应用能够在最少显式配置的情况下正常运行。为了让这些“魔法”生效,Rails 需要找到应用中的各个组件。正如我们稍后将看到的,这意味着我们需要按照特定的目录结构来组织代码,并将其放入对应的位置。rails 命令会为我们自动创建这种目录结构,并填充一些标准的 Rails 代码。
要创建第一个 Rails 应用,打开一个终端窗口,导航到文件系统中你希望创建应用目录的位置。在这个示例中,我们将项目放在名为 work 的目录下。进入该目录后,使用 rails 命令创建一个名为 demo 的应用。请注意一点:如果已存在名为 demo 的目录,系统会询问是否覆盖已有文件。
注意:如果你想指定使用的 Rails 版本,如“选择 Rails 版本”中所述,现在就是设置的时候。
1rubys> cd work 2work> rails new demo
该命令创建了一个名为 demo 的目录。进入该目录并列出其内容,你应该能看到许多文件和子目录:
1work> cd demo 2demo> ls -p
这些目录和文件初看起来可能令人望而生畏,但目前我们可以忽略大部分内容。在本章中,我们只直接使用其中两个:
bin目录,存放 Rails 可执行文件app目录,用于编写我们的应用代码
使用以下命令检查你的安装情况:
1demo> bin/rails about
Windows 用户需要在命令前加上 ruby,并使用反斜杠:
1demo> ruby bin/rails about
该命令还能检测常见的安装错误。例如,如果找不到 JavaScript 运行环境,它会提供可用运行环境的链接。
从 bin/rails 的输出可以看出,这是从 bin 目录运行的 rails 命令。这个命令是一个包装器,也称为 binstub,它有两个作用:一是确保我们运行的是正确的依赖版本;二是通过预加载应用来加快 Rails 命令的启动速度。
如果你看到大量关于已初始化常量或与某个扩展可能存在冲突的消息,请考虑以下操作:
- 删除
demo目录 - 创建一个独立的 RVM gemset
- 重新开始
如果仍无法解决,可以使用 bundle exec 来运行 rails 命令:
1demo> bundle exec rails about
一旦 bin/rails 正常工作,我们就具备了启动独立 Web 服务器所需的一切条件,以运行刚刚创建的 Rails 应用。接下来,让我们立即启动演示应用:
1demo> bin/rails server
如果你使用的是虚拟机,则需要这样运行 Rails:
1demo> bin/rails server -b 0.0.0.0
如启动日志的第二行所示,我们已在端口 3000 启动了 Web 服务器。“localhost”表示 Puma Web 服务器仅接受来自本机的请求。
如果我们希望允许网络中的其他机器访问此服务器,有两种方式:可以分别列出允许访问的服务器,或者更简单的方式是,在 config/environments/development.rb 文件中添加以下代码,允许所有设备访问开发服务器:
1config.hosts.clear
同时,还需要将绑定主机设置为 0.0.0.0,如下所示:
1demo> bin/rails server -b 0.0.0.0
现在,我们已经成功运行了一个新应用,但它还没有包含任何我们自己的代码。
一个实时终端
注意:你可以通过下方的终端运行我们之前讨论的所有命令。
注意:如果你查看启动服务器的终端窗口,可以看到日志显示应用已启动。当我们编写应用代码并通过浏览器运行时,就可以利用这个控制台窗口追踪传入的请求。当需要关闭应用时,只需在此窗口中按下
Ctrl-C即可停止服务器。
一个 “Hello World!” 应用
我们已经通过上述命令生成了所需的文件。让我们运行下面这个简单的 “Hello World!” 应用,并查看输出结果。
No configuration found for ID: 5e13e2854f0889c11c84184a81daab7478140e7254e3f73fa6f3187b6d561790