持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
六、Rails 项目目录结构
在通过 rails s 启动项目时可以添加一些启动参数,如指定端口、IP 等,可以使用 rails s --help 来查看所支持的参数
- -p port(--port=3000) 指定 Rails 程序运行的端口
- -b ip (--binding=0.0.0.0) 绑定 Rails 程序指定的 IP
- -c (--config=file) 使用自定义的 rackup 配置文件
- -d (--deamon) 使服务器运行时作为系统守护进程
- -u (--debuger)使 Rails 程序开启 Debug 模式
- -e name(--environment=ENVIRONMENT)指定 Rails 的运行环境,默认有三个选择既 development、test 和 production, 默认为 development
- -P (--pid=pid) 指定要运行的 PID 文件,默认为 tmp/pids/server.pid。
- -h(--help) 显示命令的帮助信息。
Rails 会创建一个目录作为 Web 项目的工作目录,这个目录中会创建项目所需的应用程序、脚本、图片资源和子文件夹
- app 文件夹:该文件夹是存储 Rails 应用的核心部分,存放着针对项目的绝大部分代码
- controllers:存放着驱动业务逻辑的控制器代码
- helpers:存放的是视图辅助类,一些常用的代码
- mailers:存放与邮件服务相关的类
- models:存放描述数据结果、验证和完整性规则等的模块
- views:存放生成的 HTML 文件以及 CSS、JS 和图片等
- public 文件夹:存储 Rails 应用的通用资源,图片、JS 脚本和 CSS 样式等
- script 文件夹:用于存储 Rails 应用的各种脚本,如代码生成器脚本
- test 文件夹:用于单元测试和功能测试
- vender 文件夹:用于存储一些程序依赖的外部类库,和 lib 一样都可以被自动加载
- config 文件夹:存储与服务器、数据库或者其他文件相依赖的配置
- db 文件夹:主要用于存储数据库脚本
- doc 文件夹:存储 Rails 应用的各种文档
- lib 文件夹:存储应用程序运行过程中所需要的类库,这些类库不属于控制器、视图的辅助类,运行期间,lib 文件夹所指向的路径会被自动加载。
- log 文件夹:用于存储程序运行期间产生的日志,log 文件夹下的 development.log 会记录 Rails 操作所产生的日志
- config.ru 文件:基于 rack 服务器的配置来启动应用程序
- Gemfile 文件:此文件允许指定哪些 gem 是 Rails 应用程序所依赖的
- Rakefile 文件:包含了一些可以在命令行下运行的作业
七、创建一个基于 MySQL 数据的 Rails 项目
在命令行中执行 rails new blog -d=mysql 命令可以常见一个基于 MySQL 数据库的项目,通过 help 命令可以确定 -d 参数可以指定项目所使用的数据库,可以是 Oracle、MySQL 或者 PostgreSQL等,默认使用的是 SQLite3。
创建完成之后,在 config 目录下的 database.yml 文件中配置默认数据库连接信息
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: root
host: localhost
修改默认界面
将项目使用 RubyMine 打开,并启动该项目,浏览器输入 http://localhost:3000/, 可以看到如下欢迎页面
在命令行中进入到项目目录下,执行名 rails generate controller home index 创建一个新的控制器。
该命令会创建 控制器、测试脚本以及响应的前段页面等,并且输出了页面的地址,将 /views/home/index.html.ber 文件修改为如下内容:
<h1>INDEX 页面</h1>
<h2>这是 Rails 项目的第一个页面</h2>
<h3>该页面所在项目中的位置如下:</h3>
<p>Find me in app/views/home/index.html.erb</p>
在 config/routes.rb 文件下配置首页的路由。
root :to=> "home#index"
再次重启项目,浏览器输入相同的地址
可以看到,自定义的页面作为首页代替了原来的欢迎界面。