不过也确实如你所说,service 文件增长超快,我那点代码都写了 7,8 个内部类。而且由于设计表单校验,还要再写一套区分前后台,感觉作者在这方面的考虑确有所欠缺。
嘛,用内部类也是无可奈何的事,毕竟这个类不仅要处理逻辑,还要负责生成和校验表单。 这里是我项目里的一段代码:
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 这里有个非常详细的教程,我是看这个一步到位的,不过是日文。。。。
#3 楼 @darkbaby123 rails 不是反 oop,相反由于 ruby 的关系到处都是 oop,只是不提倡 java 那套。
http://web-colle.herokuapp.com/ 这个是我上个星期开始写的网站,前天上线了,其中就有用到这个 gem。整体感觉就是不怎么适合小网站:
search_controller
这些 modeless controller 的代码就不知道放哪里了...浏览器跟你写的脚本都是程序,如果是硬检测的话先用浏览器看一下请求头 如果是基于用户行为检测的话无解(比如 google 新出的 reCAPTCHA)。这东西要是普及了采集站都得死
忘记 migrate 了?
result1 = one(two {
"three"
})
result2 = one(two) do
"three"
end
例子真心举得拐弯抹角,生怕新手看得懂似的...
昨天把这个 gem 用在自己的新项目中,感觉完成度略低,测试基本没有,只能说勉强能用。不过看的出来作者野心挺大的,队列,上传都有考虑。 controller 的确干净很多,model 的话除了将 validates 移出来外好像没多少改进(trailblazer 采用的更新方式导致 dirty check 无效了),目前配合 conern 还 ok
http://www.zhangxinxu.com/wordpress/2013/01/progressive-jpeg-image-and-so-on/
这里有详尽的介绍,代码去问谷歌应该 ok 了
ztree
国内也有一个叫 avalon 的 mvvm 框架,主要是支持 ie6 和修正 angular 在 dirty check 上面的性能缺陷(现在不知道修复没) vuejs 不知道有什么让人眼前一亮的东西,如果是主打框架概念的话,都是 mvvm 差距应该不会太多 不过如果让我从中选一个的话还是 angular,毕竟用户量摆在那里,1.x 的生态圈也开始完善了
主表 copy 一份到 db 是什么意思? 如果是 ar object clone 的话可以试试 amoeba
我的思路:
当然,更普遍的情况是要么在请求线程内完成,要么丢到队列就不管了。这个请自行斟酌
触发器?不知道有没有人这样用
同 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 亿键盘的梦想
这里有 译文,不过评论才是亮点~
volt 试玩了一下,确实叼.. opal 不仅封装了 js,还把 jquery 什么乱七八糟的都给封装了。不知道目的为何,不过个人并不看好。 fire 还没看到影..
#49 楼 @darkbaby123 谢谢 :) 虽然知道 atscript 是把代码编译成 es5,但我没想到是 es6 的规范..