<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>bastengao</title>
    <link>https://ruby-china.org/bastengao</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>blacksand 一个 CMS Rails Engine</title>
      <description>&lt;p&gt;内部项目需要做一个门户系统，但是找了 Rails 其他 CMS gem 以后发现没有能用的东西，有点沮丧。
所以作为一个程序员必须自力更生，发明轮子。
&lt;a href="https://github.com/microwisesystem/blacksand" rel="nofollow" target="_blank" title=""&gt;blacksand&lt;/a&gt; 最初是在一个内部项目上写的最早的代码，后来把业务不相关的东西提取出来，在解决内部项目问题上一点一点完善，在做了 3、4 个门户网站后基本成形。&lt;/p&gt;

&lt;p&gt;blacksand 抽象出了模板、原型、页面和导航。模板考虑到大部分情况 CMS 的编辑人员都不会 html/css 这些东西，模板主要面向的是程序员，所以添加模板就直接在 Rails 项目写 erb, 然后通过 yaml 导入到数据。例如下面：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/
  themes/
    demo/
      views/
        news/
          index.erb.html
          show.erb.html
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;demo.yml&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;templates&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;新闻列表"&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/news/index&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;新闻详情"&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/news/show&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;程序员的工作就是添加模板，供编辑人员添加页面的时候选择使用，模板将决定页面将如何展示。&lt;/p&gt;

&lt;p&gt;原型考虑到页面有些场景下不只两个属性（标题和内容），例如新闻除了标题和新闻内容这两个属性外，还会有发布时间和编辑。提取出新闻原型，添加的页面选择新闻原型后，就会给页面动态扩展两个属性并显示两个输入框。抽象出原型可以提供页面不同的数据需求。原型就像类，规定有哪些字段，页面就像实例，存储实际的数据。原型也是通过 yaml 导入到数据库的，例如：&lt;/p&gt;

&lt;p&gt;demo.yml&lt;/p&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;prototypes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;新闻&lt;/span&gt;
    &lt;span class="na"&gt;fields_attributes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;date&lt;/span&gt;
      &lt;span class="na"&gt;field_type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;date&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;发布时间&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;editor&lt;/span&gt;
      &lt;span class="na"&gt;field_type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;编辑&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;页面就代表着实际的页面，展示在前端。页面默认有标题、内容（富文本）、模板、原型和标示属性。同时页面也有父子关系，用来规划不同内容板块，例如新闻列表下有很多条新闻。&lt;/p&gt;

&lt;p&gt;导航则代表着大部分门户系统顶部的导航条，后台维护一个导航列表。导航可以关联某个具体的页面或者是外部链接。&lt;/p&gt;

&lt;p&gt;blacksand 是一个 Rails Engine, 有比较轻的倾入性，可以和现有的 Rais 项目集成。内部实现上使用了 &lt;a href="https://github.com/chamnap/themes_on_rails" rel="nofollow" target="_blank" title=""&gt;themes_for_rails&lt;/a&gt;，可以让一个 Rails 项目提供多个门户系统而模板不会乱。&lt;/p&gt;

&lt;p&gt;以上就是 blacksand 的设计思路，欢迎大家使用，提交 issue 或者 pr。&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Fri, 16 Jun 2017 08:31:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/33241</link>
      <guid>https://ruby-china.org/topics/33241</guid>
    </item>
    <item>
      <title>Homeland 导航未选中</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/4488818879de75a9febb26ecccf92869.png!large" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Wed, 04 Jan 2017 09:05:59 +0800</pubDate>
      <link>https://ruby-china.org/topics/32051</link>
      <guid>https://ruby-china.org/topics/32051</guid>
    </item>
    <item>
      <title>public/404.html 原来支持 I18n</title>
      <description>&lt;p&gt;以前都是修改 public/404.html 默认的内容为中文，看了 Rails 的源代码才发现是支持 I18n 的，&lt;a href="https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/middleware/public_exceptions.rb#L45" rel="nofollow" target="_blank" title=""&gt;源代码&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;想支持中文只需要添加 public/xxx.&lt;code&gt;zh-CN&lt;/code&gt;.html 就可以了，前提是配置了 &lt;code&gt;config.i18n.default_locale = :'zh-CN'&lt;/code&gt;。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public/404.zh-CN.html
public/500.zh-CH.html
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>bastengao</author>
      <pubDate>Wed, 15 Jun 2016 23:35:01 +0800</pubDate>
      <link>https://ruby-china.org/topics/30288</link>
      <guid>https://ruby-china.org/topics/30288</guid>
    </item>
    <item>
      <title>[西安] 元智系统招聘 Rails 工程师 1 名</title>
      <description>&lt;h3 id="关于公司"&gt;关于公司&lt;/h3&gt;
&lt;p&gt;西安元智系统技术有限责任公司是由西北工业技术研究院及海外留学人员共同创办的高新技术企业。公司以无线通信技术为主导，从事相关软件和硬件产品的研发、生产、销售，并提供系统集成和技术咨询服务。公司具有自主知识产权的产品已经在多个行业中应用，涵盖了文物保护等领域。&lt;/p&gt;

&lt;p&gt;由公司自主研发的“文物微环境实时监测系统”系列产品已成功应用在：2011 年西安世园会、国家科技支撑计划 - 文物出土现场保护移动实验室、兵马俑博物院、陕西历史博物馆、汉阳陵博物馆、南京大报恩寺遗址、渤海国贞孝公主墓、高句丽世界文化遗产保护区等文物保护项目中。&lt;/p&gt;
&lt;h3 id="活动图片"&gt;活动图片&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/3c47cc7d33556b6976e850a81eec4569.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="职位信息"&gt;职位信息&lt;/h3&gt;
&lt;p&gt;Ruby on Rails 工程师 1 名&lt;/p&gt;

&lt;p&gt;招聘要求：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;熟悉网页前端开发，html, css, javascript 等&lt;/li&gt;
&lt;li&gt;熟悉 ruby/Ruby on Rails 开发，并有相关经验&lt;/li&gt;
&lt;li&gt;具有 Mysql 或者 Postgresql 等设计和开发经验&lt;/li&gt;
&lt;li&gt;熟悉 Rspec, 能够编写自动化测试&lt;/li&gt;
&lt;li&gt;熟悉 linux, git 的使用&lt;/li&gt;
&lt;li&gt;善于沟通，有良好的团队协作能力&lt;/li&gt;
&lt;li&gt;接受实习生&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;加分项：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;有个人技术博客&lt;/li&gt;
&lt;li&gt;有自己的开源项目，或者参与的开源项目&lt;/li&gt;
&lt;li&gt;有其他语言的开发经验，如 java, objective-c, python, node.js 等&lt;/li&gt;
&lt;li&gt;有移动开发的经验&lt;/li&gt;
&lt;li&gt;有 jquery, bootstrap 等使用经验&lt;/li&gt;
&lt;li&gt;有 ionic, react-native 等开发经验&lt;/li&gt;
&lt;li&gt;有 angular.js, react.js, ember.js 等开发经验&lt;/li&gt;
&lt;li&gt;有 Mongodb, Redis, Memcached 等使用经验&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="公司福利"&gt;公司福利&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;五险 (养老、医疗、生育、工伤、失业)&lt;/li&gt;
&lt;li&gt;按照国家规定法定假期放假&lt;/li&gt;
&lt;li&gt;年终奖励&lt;/li&gt;
&lt;li&gt;双休，上班时间是早上 8:30 到下午 5:30&lt;/li&gt;
&lt;li&gt;每年组织旅游，员工生日庆祝活动&lt;/li&gt;
&lt;li&gt;羽毛球和游泳俱乐部&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上以公司人事描述的为准。&lt;/p&gt;
&lt;h3 id="联系我们"&gt;联系我们&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;公司地址：西安市高新区锦业路 69 号创业研发园 E 座 4 层&lt;/li&gt;
&lt;li&gt;公司主页： &lt;a href="http://microwise-system.com/" rel="nofollow" target="_blank"&gt;http://microwise-system.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;联系邮箱：hr{at}microwise-system.com&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>bastengao</author>
      <pubDate>Thu, 31 Mar 2016 15:39:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/29519</link>
      <guid>https://ruby-china.org/topics/29519</guid>
    </item>
    <item>
      <title>派生出的 Rails 项目如何复用？</title>
      <description>&lt;p&gt;我们目前有一个成熟的产品，现在需要针对客户提出的新需求，基于之前的项目加许多定制的功能，但是新加的功能又不具有很强的通用性。&lt;/p&gt;

&lt;p&gt;现在能想到的办法是把之前的项目重新拷贝一个新的项目，修改下项目 ID，在此基础上修改。但是可能公共的功能需要同步修改，不知道有没有比较好的办法？&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Tue, 23 Feb 2016 09:55:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/29059</link>
      <guid>https://ruby-china.org/topics/29059</guid>
    </item>
    <item>
      <title>[西安] 元智系统招聘 Rails 工程师 1 名</title>
      <description>&lt;h3 id="关于公司"&gt;关于公司&lt;/h3&gt;
&lt;p&gt;西安元智系统技术有限责任公司是由西北工业技术研究院及海外留学人员共同创办的高新技术企业。公司以无线通信技术为主导，从事相关软件和硬件产品的研发、生产、销售，并提供系统集成和技术咨询服务。公司具有自主知识产权的产品已经在多个行业中应用，涵盖了文物保护等领域。&lt;/p&gt;

&lt;p&gt;由公司自主研发的“文物微环境实时监测系统”系列产品已成功应用在：2011 年西安世园会、国家科技支撑计划 - 文物出土现场保护移动实验室、兵马俑博物院、陕西历史博物馆、汉阳陵博物馆、南京大报恩寺遗址、渤海国贞孝公主墓、高句丽世界文化遗产保护区等文物保护项目中。&lt;/p&gt;
&lt;h3 id="活动图片"&gt;活动图片&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/3c47cc7d33556b6976e850a81eec4569.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="职位信息"&gt;职位信息&lt;/h3&gt;
&lt;p&gt;Ruby on Rails 工程师 1 名&lt;/p&gt;

&lt;p&gt;招聘要求：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;熟悉网页前端开发，html, css, javascript 等&lt;/li&gt;
&lt;li&gt;熟悉 ruby/Ruby on Rails 开发，并有相关经验&lt;/li&gt;
&lt;li&gt;具有 Mysql 或者 Postgresql 等设计和开发经验&lt;/li&gt;
&lt;li&gt;熟悉 Rspec, 能够编写自动化测试&lt;/li&gt;
&lt;li&gt;熟悉 linux, git 的使用&lt;/li&gt;
&lt;li&gt;善于沟通，有良好的团队协作能力&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;加分项：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;有个人技术博客&lt;/li&gt;
&lt;li&gt;有自己的开源项目，或者参与的开源项目&lt;/li&gt;
&lt;li&gt;有其他语言的开发经验，如 java, objective-c, python, node.js 等&lt;/li&gt;
&lt;li&gt;有移动开发的经验&lt;/li&gt;
&lt;li&gt;有 jquery, bootstrap 等使用经验&lt;/li&gt;
&lt;li&gt;有 angular.js, react.js, ember.js 等开发经验&lt;/li&gt;
&lt;li&gt;有 Mongodb, Redis, Memcached 等使用经验&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="公司福利"&gt;公司福利&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;五险 (养老、医疗、生育、工伤、失业)&lt;/li&gt;
&lt;li&gt;按照国家规定法定假期放假&lt;/li&gt;
&lt;li&gt;年终奖励&lt;/li&gt;
&lt;li&gt;双休，上班时间是早上 8:30 到下午 5:30&lt;/li&gt;
&lt;li&gt;每年组织旅游，员工生日庆祝活动&lt;/li&gt;
&lt;li&gt;羽毛球和游泳俱乐部&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上以公司人事描述的为准。&lt;/p&gt;
&lt;h3 id="联系我们"&gt;联系我们&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;公司地址：西安市高新区锦业路 69 号创业研发园 E 座 4 层&lt;/li&gt;
&lt;li&gt;公司主页： &lt;a href="http://microwise-system.com/" rel="nofollow" target="_blank"&gt;http://microwise-system.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;联系邮箱：hr{at}microwise-system.com&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>bastengao</author>
      <pubDate>Tue, 31 Mar 2015 15:15:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/24934</link>
      <guid>https://ruby-china.org/topics/24934</guid>
    </item>
    <item>
      <title>Rails nested resources 如何判断在哪个嵌套的资源下面？</title>
      <description>&lt;p&gt;routes.rb&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:posts&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:comments&lt;/span&gt;
  &lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:tags&lt;/span&gt;
  &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如我有上面的路由，在 comments 和 tags 的页面中如何判断他们在 posts 下面？&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Thu, 19 Jun 2014 16:05:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/20051</link>
      <guid>https://ruby-china.org/topics/20051</guid>
    </item>
    <item>
      <title>Sublime Text 3 大家都用哪个包能做代码补全？</title>
      <description>&lt;p&gt;RT&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Thu, 15 May 2014 18:55:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/19282</link>
      <guid>https://ruby-china.org/topics/19282</guid>
    </item>
    <item>
      <title>Rails current_page? 为什么不支持 post method</title>
      <description>&lt;p&gt;使用 &lt;code&gt;current_page?&lt;/code&gt; 来做 li 的是否选中，工作正常但除过 post 请求回来的页面 current_page? 就是有问题。&lt;/p&gt;

&lt;p&gt;搜索结果后 &lt;a href="http://stackoverflow.com/questions/9749807/rails-current-page-fails-when-method-is-post" rel="nofollow" target="_blank"&gt;http://stackoverflow.com/questions/9749807/rails-current-page-fails-when-method-is-post&lt;/a&gt; ，看&lt;a href="http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F" rel="nofollow" target="_blank" title=""&gt;源代码&lt;/a&gt;中有这么一行&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt; &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get?&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问大侠为什么过滤掉 post 请求？&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Tue, 29 Oct 2013 21:59:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/15135</link>
      <guid>https://ruby-china.org/topics/15135</guid>
    </item>
    <item>
      <title>[已解决] vagrant box 下载的好慢，求解决办法</title>
      <description>&lt;p&gt;我这里的网速 8M 电信，可是 &lt;code&gt;vagrant box add lucid32 http://files.vagrantup.com/lucid32.box&lt;/code&gt; 下载了一个小时，才下了 10 MB。不知道大家遇没遇这个问题。&lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Sat, 13 Jul 2013 21:39:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/12487</link>
      <guid>https://ruby-china.org/topics/12487</guid>
    </item>
    <item>
      <title>大家的编辑器都是什么字体？</title>
      <description>&lt;p&gt;大家的编辑器都是什么字体？  &lt;/p&gt;</description>
      <author>bastengao</author>
      <pubDate>Mon, 20 Feb 2012 01:03:08 +0800</pubDate>
      <link>https://ruby-china.org/topics/1298</link>
      <guid>https://ruby-china.org/topics/1298</guid>
    </item>
  </channel>
</rss>
