<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>cwang8023 (wang)</title>
    <link>https://ruby-china.org/cwang8023</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>基于 Sinatra 的微信 gem，我可以说我是 DSL 设计的吗？</title>
      <description>&lt;p&gt;前段时间玩微信，一时兴起，想着写一个 DSL 的微信 gem，结果就有了这个项目：
&lt;a href="https://github.com/charleyw/weChat-backend" rel="nofollow" target="_blank"&gt;https://github.com/charleyw/weChat-backend&lt;/a&gt;
自带 web 环境（当然是 sinatra）
主要卖点：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;快&lt;/li&gt;
&lt;li&gt;简单&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;跟 sinatra 一样上手快，简单。完全基于 sinatra，无论是语法，还是文件结构都一一模仿了。写的时候顺便看了 sinatra 的源码，学到了不少东西。&lt;/p&gt;

&lt;p&gt;使用方法可以参照：&lt;/p&gt;
&lt;h2 id="仅需3步,一个文件创建一个微信后台程序"&gt;仅需 3 步，一个文件创建一个微信后台程序&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;安装 Gem&lt;br&gt;
&lt;code&gt;ruby
gem install 'wei-backend'
&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;创建微信后台主程序&lt;strong&gt;app.rb&lt;/strong&gt;, 内容如下：
```ruby 
require 'sinatra'
require 'wei-backend'&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;token "mytoken"&lt;/p&gt;

&lt;p&gt;on_text do
    "你发送了如下内容：#{params[:Content]}!!"
end&lt;/p&gt;

&lt;p&gt;on_subscribe do
    "感谢您的订阅"
end&lt;/p&gt;

&lt;p&gt;on_unsubscribe do
    "欢迎您再次订阅"
end&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. 启动   
```ruby
    ruby app.rb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;详细使用说明可以参考&lt;a href="https://github.com/charleyw/weChat-backend" rel="nofollow" target="_blank" title=""&gt;README.md&lt;/a&gt;,repo 里面还有一个例子可以参考。&lt;/p&gt;

&lt;p&gt;当前能接受并解析用户发送的文本，位置，以及触发订阅和取消订阅事件的消息，能返回文本和图文消息。后续会支持所有类型的请求消息和返回消息。后续还得进行一些重构，现在判断返回消息类型是根据是字符串（文本）还是 hash 值（图文消息）进行的。跟 sinatra 的依赖关系还的理一理。&lt;/p&gt;

&lt;p&gt;现在这个 gem 有一个稳定用户，在微信上搜#pm2.5 查询#排名第一的就是了。&lt;/p&gt;</description>
      <author>cwang8023</author>
      <pubDate>Sat, 12 Apr 2014 16:49:56 +0800</pubDate>
      <link>https://ruby-china.org/topics/18557</link>
      <guid>https://ruby-china.org/topics/18557</guid>
    </item>
  </channel>
</rss>
