Ruby Sinatra 框架实战项目
Ruby Sinatra 框架实战项目:构建一个简单的博客系统
Sinatra 是一个轻量级的 Ruby web 框架,它简洁易用,非常适合构建小型 web 应用和 API。本文将通过构建一个简单的博客系统,带你深入了解 Sinatra 框架的实战应用。这个博客系统将包含以下功能:
- 显示文章列表
- 创建新文章
- 查看文章详情
- 编辑文章
- 删除文章
1. 项目初始化
首先,创建一个名为 blog
的目录,并在该目录下创建一个名为 app.rb
的文件。
bash
mkdir blog
cd blog
touch app.rb
接下来,我们需要安装 Sinatra gem。在 blog
目录下创建一个名为 Gemfile
的文件,并添加以下内容:
ruby
source 'https://rubygems.org'
gem 'sinatra'
gem 'sinatra-contrib' # 提供一些有用的扩展
gem 'thin' # web 服务器
gem 'erubis' # 模板引擎
gem 'rack' # web server interface
gem 'activerecord' # 数据库交互
gem 'sqlite3' # sqlite 数据库
然后,在终端执行以下命令安装 gem:
bash
bundle install
2. 数据库设置
我们使用 SQLite 数据库来存储博客数据。在 blog
目录下创建一个名为 db
的目录,并在其中创建一个名为 development.db
的文件。
接下来,在 app.rb
文件中添加数据库配置:
```ruby
require 'sinatra'
require 'sinatra/reloader' if development?
require 'sinatra/activerecord'
require 'erubis'
set :database, {adapter: "sqlite3", database: "db/development.db"}
定义文章模型
class Post < ActiveRecord::Base
end
创建数据库表
Post.establish_connection
unless Post.table_exists?
ActiveRecord::Schema.define do
create_table :posts do |t|
t.string :title
t.text :content
t.timestamps
end
end
end
```
3. 路由和视图
现在,我们可以开始定义路由和视图来实现博客功能。
```ruby
首页:显示文章列表
get '/' do
@posts = Post.all.order(created_at: :desc)
erb :index
end
新建文章页面
get '/posts/new' do
erb :new
end
创建新文章
post '/posts' do
post = Post.new(params[:post])
if post.save
redirect '/'
else
erb :new
end
end
查看文章详情
get '/posts/:id' do
@post = Post.find(params[:id])
erb :show
end
编辑文章页面
get '/posts/:id/edit' do
@post = Post.find(params[:id])
erb :edit
end
更新文章
put '/posts/:id' do
post = Post.find(params[:id])
if post.update(params[:post])
redirect "/posts/#{post.id}"
else
erb :edit
end
end
删除文章
delete '/posts/:id' do
post = Post.find(params[:id])
post.destroy
redirect '/'
end
```
接下来,在 blog
目录下创建一个名为 views
的目录,并在其中创建以下 erb 模板文件:
- index.erb:
```erb
Blog Posts
-
<% @posts.each do |post| %>
-
<%= post.title %>
(<%= post.created_at.strftime("%Y-%m-%d") %>)
<% end %>
New Post
```
- new.erb:
```erb
New Post
```
- show.erb:
```erb
<%= @post.title %>
<%= @post.content %>
<%= @post.created_at.strftime("%Y-%m-%d") %>
<a href="/posts/<%= @post.id %>/edit">Edit |
```
- edit.erb:
```erb
Edit Post
```
4. 运行应用
在终端执行以下命令启动应用:
bash
ruby app.rb
现在,你可以在浏览器中访问 http://localhost:4567
来查看你的博客应用了。
5. 总结
通过这个简单的博客系统示例,我们学习了如何使用 Sinatra 框架构建 web 应用,包括路由定义、视图渲染、数据库交互等。Sinatra 的简洁性和易用性使其成为快速原型开发和构建小型 web 应用的理想选择。
当然,这只是一个简单的示例,你可以根据自己的需求扩展这个博客系统,例如添加用户认证、评论功能、标签功能等。 Sinatra 丰富的生态系统和扩展库可以帮助你轻松实现这些功能。 希望这篇文章能够帮助你更好地理解和应用 Sinatra 框架。
这个例子使用了 ActiveRecord 来进行数据库操作,简化了数据库交互的代码。 你也可以使用其他的 ORM 或者直接使用 SQL 语句来操作数据库. 此外,Sinatra 还支持各种模板引擎,例如 Haml, Slim 等,你可以根据自己的喜好选择合适的模板引擎。 最后,为了部署到生产环境,你需要选择一个合适的 web 服务器,例如 Puma, Passenger 等,并配置相应的环境变量。