`
Hooopo
  • 浏览: 335171 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

答复: Sinatra:一个可以作为Rails有益补充的框架. 简洁而不简单

阅读更多
既然是这么简单的事情,用rack写也比较有趣:
一共5个文件,views里面和搂主的一样:
|-- app.rb
|-- config.yml
|-- console
`-- views
    |-- index.html
    `-- success.html



app.rb
#!/usr/bin/env ruby
require "rubygems"
require "rack"
require "yaml"
require "logger"
require 'active_record'

config = YAML::load(File.open(File.dirname(__FILE__) + "/config.yml"))
ActiveRecord::Base.establish_connection(config)

class Email < ActiveRecord::Base
  validates_presence_of :email  
  validates_format_of :email,:with => /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i
end


def process_request(env)
  request = Rack::Request.new(env)
  if request.post?
    Email.create! :email => request.params["email"] rescue  return "Email Format Error!"
    File.read("views/success.html")
  else
    "invalide request!"
  end
end


builder = Rack::Builder.new do

  use Rack::CommonLogger, Logger.new("/var/log/rack.log")

  use Rack::ContentType, "text/html"

  use Rack::ContentLength
  
  
  map "/" do
    run lambda{|env| [200, {}, File.read("views/index.html")]}
  end

  map "/contact" do
    run lambda{|env| [200, {}, process_request(env)]}
  end
end

Rack::Handler::Mongrel.run builder, :Port => 8080



config.yml

adapter: mysql
encode: utf8
host: localhost
username: root
password: ******
database: contacts


运行:
sudo chmod +x ./*
./app.rb


模仿rails写了一个简单的console:
console
#!/usr/bin/env ruby
require 'rubygems'
require 'yaml'
require 'active_record'
require 'irb'
require 'irb/completion'

config = YAML::load(File.open(File.dirname(__FILE__) + "/config.yml"))
ActiveRecord::Base.establish_connection(config)

class Email < ActiveRecord::Base
end

IRB.start          


运行console:
hooopo@x-hooopo:~/contact$ ./console
Irbrc Loading...
>> enable_hirb
=> true
>> Email.all
+----+-------------------+--------------------------------+
| id | email             | created_at                     |
+----+-------------------+--------------------------------+
| 1  | hoooopo@gmail.com | Sun Apr 04 22:44:46 +0800 2010 |
| 2  | hooopo@gmail.com  | Sun Apr 04 22:58:56 +0800 2010 |
+----+-------------------+--------------------------------+
2 rows in set
>> 


3
0
分享到:
评论
3 楼 Hooopo 2010-05-13  
googya 写道
瘟篼子(windows)

windows也可以,不过一些地方要改运行.rb文件时候前面要加ruby
引用
ruby ./app.rb
2 楼 googya 2010-05-13  
瘟篼子(windows)
1 楼 googya 2010-05-13  
瘟篼子下搞不成啊。
Sinatra是一个基于rack的middleware。你这个也是!呵呵。
小牛人啊!

相关推荐

    Node.js 入门手册:那些最流行的 Web 开发框架.docx

    6. Capsela:一个高级的、基于Promise的Web框架,注重测试性,通过其网站可以了解更多。 7. Cargobox:对Express的扩展,提供了更好的面向对象编程支持。 8. chain:用于构建Node应用程序的事件驱动约定框架(已...

    Sinatra并发性提升扩展Sinatra::Synchrony.zip

    Sinatra::Synchrony是 Sinatra的一个小扩展,它动态提升了Sinatra网络应用的并发性。由于EventMachine和EM-Synchrony的支持,当你有很多 ...除了可以这样简单地变成,它也让我们根据需要可以转换一个不同的并发策略。

    Ruby-Padrino一个构建在Sinatra上的全堆栈ruby框架

    Ruby-Padrino是一个基于Sinatra的全功能Web开发框架,它为开发者提供了更高级别的抽象和组织结构,使得创建复杂的Web应用变得更加简单高效。在Ruby社区中,Sinatra被誉为轻量级、简洁的HTTP服务器接口库,而Padrino...

    sinatra-template-源码.rar

    Sinatra是一个轻量级的Ruby框架,用于构建Web应用程序。它以其简洁、直观的语法著称,使得开发者能够快速地搭建RESTful Web服务。在"sinatra-template-源码.rar"这个压缩包中,我们有机会深入理解Sinatra的工作原理...

    Ruby-RedisDashboard一个用于监控Redis服务器的Sinatra应用

    Sinatra是一个简洁、灵活的Ruby框架,用于构建Web应用。它允许开发者用一种声明式的方式来定义路由、模板和中间件,使得创建Web服务变得极其简单。Sinatra的核心理念是"约定优于配置",这使得代码更易读、易维护。 ...

    PHP版本的Sinatra极其轻量优雅的web领域专用语言框架

    4. **轻量级**:Pinatra不强制使用特定的数据库或ORM,这使得它非常适合小型项目或者作为其他复杂框架的补充。 5. **灵活性**:由于其基于PHP,Pinatra可以与现有的PHP生态系统无缝集成,利用Composer进行依赖管理...

    jfry,java fry是一个受sinatra启发的web库.zip

    Java Fry 是一个基于Java语言的轻量级Web框架,其设计灵感来源于Ruby的Sinatra框架。Sinatra以其简洁明了的语法和高效的工作流程而受到开发者喜爱,Java Fry旨在为Java开发者提供相似的开发体验,使得构建Web应用变...

    jump star sinatra sinatra教程

    Sinatra 是一款轻量级的 Ruby Web 框架,以其简洁性、灵活性而著称。它非常适合快速开发小型 Web 应用程序或者 API 接口。《JumpStart Sinatra》这本书由 Darren Jones 编写,旨在帮助读者在短时间内掌握 Sinatra 的...

    应用Rails进行敏捷Web开发

    3. **ActiveRecord**:Rails的ORM(对象关系映射)层,它将数据库操作封装为Ruby对象,使得开发者可以使用简单的Ruby代码进行数据库操作,如创建、读取、更新和删除记录。 4. **路由**:Rails的路由系统是连接URL到...

    sinatra-starter-template:sinatra快速入门模板

    Sinatra快速入门模板使用方式如下: $ quik new sinatra这将下载并运行 starter向导脚本( )。 导致: Hello from the sinatra quick starter wizard scriptQ: Name of the sinatra app? [hola]: holaThanks! Ready...

    blog:Sinatra上的博客带来的好处

    Sinatra是一款轻量级、灵活的Web开发框架,它允许开发者以简洁的代码实现功能丰富的应用程序。在这个场景中,我们关注的是如何利用Sinatra为个人或专业目的创建博客平台。 1. **轻量级和简洁**: Sinatra以其简洁的...

    基于OpenResty的LuaWeb框架Lor.zip

    Lor是一个运行在[OpenResty](http://openresty.org)上的基于Lua编写的Web框架. 路由采用[Sinatra](http://www.sinatrarb.com/)风格,结构清晰,易于编码和维护. API借鉴了[Express](http://expressjs.com)的思路...

    sinatra-bootstrap:一个简单的Sinatra起点

    一个简单的Sinatra起点 Sinatra Bootstrap支持: Sinatra Bootstrap的目的是什么? 我创建Sinatra Bootstrap是为了使Sinatra项目具有一致的起点。 我喜欢在每个项目中都可以使用Haml,Sass和Compass,同样,jQuery...

    sinatra-angular-tmpl:这是一个用 Sinatra 编写的应用程序框架,使用 AngularJS 作为前端框架

    Sinatra / AngularJS 应用程序骨架介绍这是一个用 Sinatra 编写的应用程序框架,使用 AngularJS 作为前端框架。 该结构的灵感来自: Minko Gechev 在风格指南上的最佳实践建议当我学习 AngularJS 时,我使用这两个...

    rails-assets-sinatra:那是

    这是一个最小的演示应用程序,展示了如何在 Sinatra 应用程序中使用 。 Rails Assets 将与基于的应用程序集成在一起。 一体化 文件 此应用程序使用将 Sinatra 与 Sprockets 集成的 Sinatra 。 您还需要添加适当的...

    async_sinatra:Sinatra的一个插件,可提供DSL扩展以使用Thin进行异步响应

    Sinatra是一个轻量级的Ruby web框架,它以其简洁的语法和高效的开发效率受到开发者喜爱。然而,作为同步模型的web框架,对于高并发请求的处理能力有限。async_sinatra的出现,弥补了这一不足。 Thin是一个基于...

    终于知道怎么把rails Web程序打包成可执行文件了

    3. **Rack-based executable**: Rails应用本质上是Rack应用,因此你可以创建一个Rack服务器,如Sinatra,然后包装Rails作为其一部分。这样可以生成一个独立的可执行文件,但可能需要额外的配置来处理Rails的依赖。 ...

    Ruby-極光Rails5專屬伺服器安裝包

    2. **Passenger 5**: Passenger(又名Phusion Passenger)是一个流行的Web服务器模块,专门用于Ruby on Rails和Sinatra等Web框架。Passenger 5支持多进程和多线程模型,可以有效地管理Rails应用的实例,提高并发处理...

    unirevsin:Sinatra Unicode 反向器

    6. **Rack**:Rack 是 Ruby Web 服务器接口,它定义了一个简单的协议,使得任何 Ruby 应用可以作为 Web 服务器的中间件。`config.ru` 文件用于配置 Rack 应用,可以启动 Sinatra 服务器。 7. **Ruby gem**:Ruby ...

    Ruby-LiteCable轻量级ActionCable实现免Rails

    然而,Rails作为一个全功能的框架,有时可能会显得过于庞大,不适用于轻量级或非Rails项目。这就是 Lite Cable 的用武之地。 Lite Cable 是一个独立于Rails的库,它实现了ActionCable的协议和API,使得开发者可以在...

Global site tag (gtag.js) - Google Analytics