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 等,并配置相应的环境变量。

THE END