1.x 和 2.x 的 api 是不同的,留意版本哦
我还没 debug 过,都是自动测试加 p。
喜欢用什么就用什么吧,只要代码规范,简洁,易读。我用 vim,同事有 Netbeans 的,emacs 的(曾经),最近有人在折腾 rubymine,其乐融融。
对于我,vim 有份安心的感觉,我开始学 rails 的时候还是穷学生,电脑烂,IDE 要不不好用要不收费要不太占资源。而恰好 rails 是个提倡编辑器环境的框架,如果有什么地方是没有 IDE 就不方便的,rails 框架就不会提倡,比如 debug。所以我就一直用下来了。
用什么都好,一定要把自己的工具用到滚瓜烂熟。
这样就可以在管理后台改了
vundle 更好
哇,为啥要举个反 RESTful 的例子,已经搞不明白你的意图了
destroy 已经包含在 resources 默认的 7 动作里面了。collention 和 member 都对 http 动作没有限定。
通过 AR 导入当然慢啦,还有 callback validate observe
没有业务逻辑的时候就应该用数据库纯粹的导入,数据不合就写预处理脚本或者导入之后再转导入另一个表。
没有定制编译需求的话就应该用系统源里面的嘛,自带启动脚本
resque 底层 redis 是很快的
# config/environments/development.rb
config.assets.compile = true
开发环境不 precompile 默认就是即时更新的
但是这个功能有时会失效 —— 有时会被墙
不同版本的 rubygem 被墙时出错信息不同,比如:
垃圾箱里面?
html_safe 我感觉是不是误用了,如果 Text 内容是
<script type="text/javascript">alert();</script>
呢?
kubuntu
The GitHub Pages feature allows you to publish content to the web by simply pushing content to one of your GitHub hosted repositories.
默认的 css 和 javascript 应该叫做 application.css 和 application.js,文件在 app/assets 下面的子目录可以找到,应该链接这两个
你得到它了
加密需要传输层加密,https
防止机器注册可以用验证码之类的方式
The action 'show' could not be found for CommentsController
你访问了一个页面,路由映射到 CommentsController#show 方法,但是这个方法未定义
什么年代的手机浏览器啊不支持 Cookiestore……
#1 楼 @hooopo 试了下,Rails 可以处理 Content-Type: application/json
curl localhost:3000 -XPOST -d '{"a":1, "b":2}' -H "Content-Type: application/json"
Started POST "/" for 127.0.0.1 at 2011-12-11 17:23:01 +0800
Processing by HomepageController#index as */*
Parameters: {"a"=>1, "b"=>2, "homepage"=>{"a"=>1, "b"=>2, "controller"=>"homepage", "action"=>"index"}}
不知道后面的 homepage 是怎么回事。服务端处理的时候那个 as / ,应该说明了返回格式跟 Content-Type 无关(跟 Accept 以及 params 中的 format 有关)
application/x-www-form-urlencoded 是一些 Http 库的默认行为,比如 Rest-client、JQuery Ajax,用起来比较方便,不然还得教客户端编写者怎么指定 Content-Type。
#3 楼 @iBachue 抱歉,我也是道听途说,刚测试了一下,依然无法捕获
https://github.com/rails/rails/issues/671
看后面讨论似乎是不打算修复了,依然需要那条路由。
然后回到主题,omniauth 运行在 rack 层,应该不会被 route 里面的规则影响阿。
$cd ruby-china
$rake middleware
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x00000003bbfa50>
use Rack::Runtime
use Rack::MethodOverride
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::RemoteIp
use Rack::Sendfile
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use ActionDispatch::Head
use Rack::ConditionalGet
use Rack::ETag
use ActionDispatch::BestStandardsSupport
use Warden::Manager
use Rack::Mongoid::Middleware::IdentityMap
use OmniAuth::Strategies::GitHub
use OmniAuth::Strategies::Twitter
use OmniAuth::Strategies::Douban
use OmniAuth::Strategies::OpenID
run RubyChina::Application.routes
最后才到 Route::Application.routes
如果真的不行,把 404 路由改成
match '*path' => 'home#construction', :constraints => { :path => /^(?!auth).*/ }
rack 处理比 route 要前,应该不会被路由规则干扰阿。
然后处理 404 应该用 rescue_from(曾经某个版本的 rescue_from 不能正确处理路由缺失,现在已经好了)
不过我印象中,只要涉及 3 个或以上状态的,不用状态机管理都会慢慢变得不可管理……建议还是上状态机