使用Ruby开发Web服务端应用实战

技术趋势洞察 2019-12-23 ⋅ 12 阅读

Ruby是一种灵活且简洁的编程语言,非常适合用于开发Web服务端应用。在本篇博客中,我们将介绍如何使用Ruby来开发一个简单的Web应用。

应用场景

我们将创建一个简单的待办事项应用,用户可以通过Web界面添加、编辑和删除待办事项。

技术栈

以下是我们将使用的技术栈:

  • Ruby - 一种简单易学的编程语言,非常适合Web开发。
  • Sinatra - 轻量级的Web框架,简化了Web应用的开发过程。
  • SQLite - 轻量级数据库,用于存储待办事项。

步骤1:准备工作

首先,确保你已经安装了Ruby和Bundler。打开终端并运行以下命令来检查:

ruby -v

如果你看到了一个版本号,就说明你已经安装了Ruby。如果没有,请根据你的操作系统安装Ruby。

然后,安装Bundler:

gem install bundler

步骤2:创建项目

在一个干净的目录中创建一个新的文件夹,用来存放我们的项目。使用以下命令创建项目:

mkdir todo-app
cd todo-app

接下来,在项目文件夹中创建一个Gemfile文件,并将以下内容添加到文件中:

source 'https://rubygems.org'

gem 'sinatra'
gem 'sqlite3'

然后,运行以下命令安装所需的依赖项:

bundle install

步骤3:创建应用

在项目文件夹中创建一个名为app.rb的文件,并将以下内容添加到文件中:

require 'sinatra'
require 'sqlite3'

# 创建一个数据库连接
db = SQLite3::Database.new "todo.db"

# 初始化数据库表
db.execute <<-SQL
  CREATE TABLE IF NOT EXISTS todos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title VARCHAR NOT NULL,
    completed BOOLEAN DEFAULT false
  );
SQL

# 设置根路径
get '/' do
  @todos = db.execute("SELECT * FROM todos")

  erb :index
end

# 处理新建待办事项请求
post '/todos' do
  title = params[:title]

  db.execute("INSERT INTO todos (title) VALUES (?)", title)

  redirect '/'
end

# 处理完成待办事项请求
put '/todos/:id' do
  id = params[:id]

  db.execute("UPDATE todos SET completed = NOT completed WHERE id = ?", id)

  redirect '/'
end

# 处理删除待办事项请求
delete '/todos/:id' do
  id = params[:id]

  db.execute("DELETE FROM todos WHERE id = ?", id)

  redirect '/'
end

步骤4:创建视图

在项目文件夹中创建一个名为views的文件夹,并在其中创建一个名为index.erb的文件,并将以下内容添加到文件中:

<!DOCTYPE html>
<html>
<head>
  <title>Todo App</title>
</head>
<body>
  <h1>Todo App</h1>

  <form method="post" action="/todos">
    <input type="text" name="title" placeholder="Add a new todo">
    <button type="submit">Add</button>
  </form>

  <ul>
    <% @todos.each do |todo| %>
      <li>
        <%= todo[1] %>
        <form method="post" action="/todos/<%= todo[0] %>">
          <input type="hidden" name="_method" value="PUT">
          <button type="submit">
            <% if todo[2] %>
              Mark as incomplete
            <% else %>
              Mark as complete
            <% end %>
          </button>
        </form>
        <form method="post" action="/todos/<%= todo[0] %>">
          <input type="hidden" name="_method" value="DELETE">
          <button type="submit">Delete</button>
        </form>
      </li>
    <% end %>
  </ul>
</body>
</html>

步骤5:运行应用

运行以下命令来启动应用:

ruby app.rb

然后在浏览器中访问http://localhost:4567,你应该能够看到待办事项应用的界面。

结论

在本篇博客中,我们使用Ruby和Sinatra创建了一个简单的Web应用程序。通过这个实战项目,你应该对如何使用Ruby开发Web服务端应用有了初步了解。你可以根据自己的需求进一步扩展和优化这个应用。Happy coding!


全部评论: 0

    我有话说: