• 不过也确实如你所说,service 文件增长超快,我那点代码都写了 7,8 个内部类。而且由于设计表单校验,还要再写一套区分前后台,感觉作者在这方面的考虑确有所欠缺。

  • #5 楼 @darkbaby123

    嘛,用内部类也是无可奈何的事,毕竟这个类不仅要处理逻辑,还要负责生成和校验表单。 这里是我项目里的一段代码:

    class WebPage < ActiveRecord::Base
      class Create < Trailblazer::Operation
        include CRUD
    
        model WebPage, :create
    
        contract do
          model WebPage
    
          property :url, validates: { presence: true }
          property :title, validates: { presence: true }
          property :description, validates: {length: {maximum: 200, allow_blank: true}}
          property :tag_list
        end
    
        def process(params)
          validate params[:web_page] do |op|
            op.save
          end
        end
      end
    end
    
    # web_pages_controller.rb
    class WebPagesController < ApplicationController
    
      def new
        form WebPage::Create
      end
    
      def create
        run WebPage::Create do |op|
          redirect_to web_pages_url and return
        end
        render :new
      end
    end
    

    去掉了 model 里面的 validation,去掉了 strong params,controler 里面没有任何持久化相关的代码 虽然有点强迫症,但看起来还可以 😄

  • #3 楼 @cqcn1991 先加入 heroku-buildpack-multi

    heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git
    

    在项目根目录新建 .buildpacks,内容如下

    https://github.com/stomita/heroku-buildpack-phantomjs.git
    https://github.com/heroku/heroku-buildpack-ruby.git
    

    最后或许还要加入环境变量,如果前两步可以就不加了:

    $ heroku config:add LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/app/vendor/phantomjs/lib
    $ heroku config:add PATH=bin:vendor/bundle/ruby/2.0.0/bin:/usr/local/bin:/usr/bin:/bin:/app/vendor/phantomjs/bin
    

    http://qiita.com/riocampos/items/a372294bdcaed8b02711 这里有个非常详细的教程,我是看这个一步到位的,不过是日文。。。。

  • #1 楼 @pobing 谢谢 XD。目前开发还在卡顿中,暂时先放着。正在全力寻找博客相关的网站

  • #3 楼 @darkbaby123 rails 不是反 oop,相反由于 ruby 的关系到处都是 oop,只是不提倡 java 那套。

    http://web-colle.herokuapp.com/ 这个是我上个星期开始写的网站,前天上线了,其中就有用到这个 gem。整体感觉就是不怎么适合小网站:

    1. service 层的代码不能复用。独立业务逻辑不多的话,代码跟没用之前一样,都丢到 model 层了
    2. service 层由于是使用嵌套的内部类,而且很多时候不能复用,导致代码行数增长的很快...
    3. Trailblazer 的 service 代码是写到 model 里的内部类,search_controller 这些 modeless controller 的代码就不知道放哪里了...
    4. 替代 callback 就意味着得时刻注意手动开启事务
    5. BUG 真的太多太多了...
  • 浏览器跟你写的脚本都是程序,如果是硬检测的话先用浏览器看一下请求头 如果是基于用户行为检测的话无解(比如 google 新出的 reCAPTCHA)。这东西要是普及了采集站都得死

  • Rails 并发疑问 at 2014年12月11日
    1. 不是,进程之上可以使用多线程或者多路复用实现并发。rails 4.0 后支持多线程之后,多进程更多是为了绕过 gil 实现 smp。
    2. 数据库基础,去了解一下悲观锁
    3. 最简单的 ab,siege
  • 忘记 migrate 了?

  • #5 楼 @jcd 当网站连响应 304 都很慢的时候,turbolinks 作用巨大...我放到 github.io 上面的博客就是用类似的 jquery 插件,效果相当明显

  • AngularJS 2.0 正在路上.. at 2014年12月06日

    #66 楼 @Lucifer batman.js 已经死了...

  • do/end 和 {} 优先权问题 at 2014年12月05日
    result1 = one(two {
    "three"
    })
    
    result2 = one(two) do
    "three"
    end
    

    例子真心举得拐弯抹角,生怕新手看得懂似的...

  • 昨天把这个 gem 用在自己的新项目中,感觉完成度略低,测试基本没有,只能说勉强能用。不过看的出来作者野心挺大的,队列,上传都有考虑。 controller 的确干净很多,model 的话除了将 validates 移出来外好像没多少改进(trailblazer 采用的更新方式导致 dirty check 无效了),目前配合 conern 还 ok

  • 网站图片的加载方式 at 2014年12月01日

    http://www.zhangxinxu.com/wordpress/2013/01/progressive-jpeg-image-and-so-on/

    这里有详尽的介绍,代码去问谷歌应该 ok 了

  • ztree

  • AngularJS 2.0 正在路上.. at 2014年11月28日

    #58 楼 @debugger es6 出来又是一阵折腾,感觉现在前端开发还在试错阶段。要稳定的话 java 或许不错,加个特性都能给你拖几年 😄

  • AngularJS 2.0 正在路上.. at 2014年11月28日

    #57 楼 @saillee meteor 的确很酷炫,我只玩过 ruby 版的 volt。不过这两个框架都有共同的问题:dom rerender 还是在整个容器范围内,如果页面复杂将会是不可忽视的性能漏洞。

  • 国内也有一个叫 avalon 的 mvvm 框架,主要是支持 ie6 和修正 angular 在 dirty check 上面的性能缺陷(现在不知道修复没) vuejs 不知道有什么让人眼前一亮的东西,如果是主打框架概念的话,都是 mvvm 差距应该不会太多 不过如果让我从中选一个的话还是 angular,毕竟用户量摆在那里,1.x 的生态圈也开始完善了

  • #1 楼 @special 逐个点一下,你会发现要不死了,要不就是半死不活,还有转 php 的..

  • 数据库 copy 功能 at 2014年11月25日

    主表 copy 一份到 db 是什么意思? 如果是 ar object clone 的话可以试试 amoeba

  • 我的思路:

    1. 客户端 post
    2. 服务器生成 uid 写到 cookie,任务进入队列
    3. 客户端跳转到新页面后,js 检查 cookie,有 tid 就向服务器轮询,任务完成后返回结果

    当然,更普遍的情况是要么在请求线程内完成,要么丢到队列就不管了。这个请自行斟酌

  • 触发器?不知道有没有人这样用

  • 动态定义路由 at 2014年11月19日

    同 6 楼.. comfortable-mexican-sofa 这个 cms 也是这么处理的,page 表里面存字段 full_path,路由这样定义:

    get '/:format' => 'content#show', :as => 'render_page', :path => "(*cms_path)"
    

    然后在控制器里面整个 url 一起查:

    @cms_page = @cms_site.pages.published.find_by_full_path!("/#{params[:cms_path]}")
    
  • 广州路边 35 块一个,2 亿键盘的梦想

  • What Ruby could do? at 2014年11月13日

    这里有 译文,不过评论才是亮点~

  • What Ruby could do? at 2014年11月13日

    volt 试玩了一下,确实叼.. opal 不仅封装了 js,还把 jquery 什么乱七八糟的都给封装了。不知道目的为何,不过个人并不看好。 fire 还没看到影..

  • AngularJS 2.0 正在路上.. at 2014年11月12日

    #49 楼 @darkbaby123 谢谢 :) 虽然知道 atscript 是把代码编译成 es5,但我没想到是 es6 的规范..

  • AngularJS 2.0 正在路上.. at 2014年11月12日

    #46 楼 @xstmjh #47 楼 @luikore

    我觉得 jsx 当模板还 ok。虽然 coffee 可以写成类似 jade 那种风格,但是不喜欢缩进代替标记语言...