20小时学会编程 互动版

应用2使用

应用2项目所在地址https://github.com/first20hours/codex

我们启动应用2

~/samples/codex$ ruby application.rb

点击 访问测试 按钮,即可看到页面效果。

我们需要对application.rb文件中的代码解释一下。

应用中的代码显示,已加密,使用了rack-ssl-enforcer添加SSL加密,这个程序迫使网络浏览器使用一种安全的SSL连接来访问站点,我们将其注释掉,就可以运行看到效果了。

#require 'rack-ssl-enforcer'       // 注释

打开数据库 database.db

DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/database.db")

定义Page模型

class Page 
  include DataMapper::Resource
  property :id,           Serial
  property :slug,         String
  ...
end

DataMapper.finalize   

#如果不存在,自动创建表 -hubwiz                                                         
DataMapper.auto_upgrade!

略过身份验证在hubwiz,在代码中我们将看到这段被注释掉。

# Authentication
use Rack::Auth::Basic, "Restricted Area" do |username, password|
  [username, password] == [ENV['ADMIN_USER'], ENV['ADMIN_PASS']]
end

#强迫所有连接使用SSL,进行身份验证
use Rack::SslEnforcer

将页面名称转换成主题

def slugify(content)
  content.downcase.gsub(/ /, '-').gsub(/[^a-z0-9_-]/, '').squeeze('-')
end

具体其他代码也是设置路由,操作具体的需求,在这里我们需要注意地点,我们还差一个/home/路由,添加到application.rb

# add missing home - hubwiz                                                                 
get '/home/' do                                                                             
  '<a href="/all/"><h1>Enter</h1></a>'                                                      
end