• 原来我用:through 一直报错是因为 mongoid 没有实现这个特性 最后参考http://groups.google.com/group/mongoid/browse_thread/thread/fd2b57f9118376c4/87730bec244a9d8c?lnk=gst&q=through#87730bec244a9d8c 解决了问题

    模型关系大致如下

    class Plan
      has_and_belongs_to_many :group
    
      def users
        group.collect { |t| t.user rescue nil }
      end
    
    class Group
      has_and_belongs_to_many :plan
      has_and_belongs_to_many :user
    
    class User
      has_and_belongs_to_many :group
    

    可以用 plan.users 获取 plan 所有 group 下的用户

  • 我用 mongoid 保存处理 csv 的记录,也就几百条/秒,确实不快。

  • 太感谢了

  • 哪位能推荐个 ror 主机? at 2011年12月22日

    盛大云

  • #1 楼 @Psi 太感谢了,找来试试

  • #1 楼 @huacnlee 内部系统,放在 nginx 后面的内网主机里,可以通过连接公网的 smtp 服务器发信,但 sendmail 就不行了。

    问题就是如果用 smtp 的话,有时会出现连接超时,一个大 job 执行一半断掉了

  • console 里关联关系无异常

    Reloading...
    => true
    irb(main):097:0> u=User.new 
    => #<User _id: 4ef1bd5d53cd2108dd000008, _type: nil, created_at: nil, updated_at: nil, name: nil, email: nil, mobile: nil, tel: nil, alias: nil, birthday: nil, second_email: nil, address: nil, company: nil, memo: nil, plan_ids: [], group_ids: []>
    irb(main):098:0> g=Group.new
    => #<Group _id: 4ef1bd6753cd2108dd000009, _type: nil, created_at: nil, updated_at: nil, name: nil, user_ids: []>
    irb(main):099:0> u.group << g
    => []
    irb(main):100:0> u.group
    => [#<Group _id: 4ef1bd6753cd2108dd000009, _type: nil, created_at: nil, updated_at: nil, name: nil, user_ids: [BSON::ObjectId('4ef1bd5d53cd2108dd000008')]>]
    irb(main):101:0> g
    => #<Group _id: 4ef1bd6753cd2108dd000009, _type: nil, created_at: nil, updated_at: nil, name: nil, user_ids: [BSON::ObjectId('4ef1bd5d53cd2108dd000008')]>
    irb(main):102:0> 
    
  • 换了 formtastic 也有同样的问题 看起来是 mongoid 哪里不对劲

  • Rails 4.0.0.beta 来了。。。 at 2011年12月21日

    4.0 会有什么 nb 的特性?

  • 10.04 还是有点老..

  • 我用 mongoid 的写法

    has_and_belongs_to_many :following, 
                            :class_name => 'User', 
                            :inverse_of => :followers
    has_and_belongs_to_many :followers, 
                            :class_name => 'User', 
                            :inverse_of => :following
    
  • #7 楼 @Rei
    解决了! 原因是在我的 nginx 的配置中有这样一段

    location ~ ^/(assets|images|javascripts|stylesheets|system)/  {
        root   /opt/dev/dreamworks/weibo/public/;
        expires max;      
        break;    
    }
    

    让 assets 的文件由 nginx 处理,不发送到后端的 unicorn。

    这个配置在生产环境没有问题,但对开发环境来说,需要注释掉上面那段 location,再给 development.rb 中加入 config.serve_static_assets = true 这样来让 unicorn 处理 assets 的请求

  • 补充:页面中正确的引入了 css/js,但是渲染模板的时候,日志中并没有任何关于 assets 文件的记录,干干净净。

  • 请求路径是正确的,说明'sprockets/railtie'被加载了 但是不知道为什么不能生成文件

  • @Psi 我做了 2 个 diff,没有发现那里不对..T 项目是 rails new 出来的,没做修改

    ** diff config/application.rb /opt/dev/t/config/application.rb **

    < #require 'rails/all'
    < #
    < #用于mongoid
    < require "action_controller/railtie"
    < require "action_mailer/railtie"
    < require "active_resource/railtie"
    < require "rails/test_unit/railtie"
    < #用于assets pipeline
    < require 'sprockets/railtie'
    < #队列服务
    < require 'resque/server'
    ---
    > require 'rails/all'
    22c12
    < module Weibo
    ---
    > module T
    44,45c34
    <     # config.i18n.default_locale = :en
    <     config.i18n.default_locale = :zh_CN    
    ---
    >     # config.i18n.default_locale = :de
    58,60d46
    < 
    <     #Used for Devise
    <     config.action_mailer.default_url_options = { :host => "yourdomain.com" }
    

    *diff config/environments/development.rb /opt/dev/t/config/environments/development.rb *

    1c1
    < Weibo::Application.configure do
    ---
    > T::Application.configure do
    30d29
    <
    

    为了 resque/server, config.ru 改成了

    require ::File.expand_path('../config/environment',  __FILE__)
    run Rack::URLMap.new "/" => Weibo::Application, "/resque" => Resque::Server.new
    
  • #2 楼 @Rei
    #1 楼 @Psi

    之前已试过删除 public/assets 删掉后 application.css/js 都是 404 对比过新建项目的 development.rb,是一致的 我用的是 twitter-bootstrap-rails,不知道跟这个有没有关系

  • 就是个远程虚拟机,没啥特别的。盛大云也有文档 注意一下安全组的配置,否则有些服务连不上

  • 多谢指点

    不过在我的环境中,APP::Application 还是会报错 最后是注释掉原生的: #run Edm::Application 添加: run Rack::URLMap.new "/" => Edm::Application, "/resque" => Resque::Server.new

    大功告成

  • 如何调试 ActionMailer at 2011年12月14日

    #5 楼 @Rei QQ 返回的信息: stat=Service unavailable stat=User unknown

  • 如何调试 ActionMailer at 2011年12月14日

    我知道了,查看/var/log/mail.log 可以看到信息 qq 企业邮箱发不过去,但 gmail 可以,具体原因待查,但证明 ActionMailer 没有问题

  • 如何调试 ActionMailer at 2011年12月14日

    #2 楼 @huacnlee 貌似 MailView 是用来验证邮件格式和内容的?但我现在的问题是在发送上,没有日志可以追踪,不知道问题是在程序上还是在系统配置上

  • 如何调试 ActionMailer at 2011年12月14日

    补充,基于 sendmail config/environments/development.rb config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :sendmail

  • 这篇文章写的确实不错。

    作为一个新手,这里提到的坑爹问题我几乎都遇到了: 资料版本过期——照例子却来各种诡异 Windows 兼容性——坑爹! Rails 升级快——IDE 兼容性,试过 4、5 种 IDE,都有问题 不懂 Ruby——不能很好的理解代码中的一些语法,知其然不知其所以然 手册资料不全——犹如黑暗中前行,照例子知道怎么做,调整一下需求就抓瞎

    事实上第一次尝试学 rails 还是在去年,因为遇到各种问题不得解答而放弃

    这回再把 rails 拾起来,因为有前车之鉴,做了充分准备: 买回了当当上近两年所有的 ruby/rails 书籍 Rails 和 Ruby 并进,在家学 rails,在公司用 ruby 写脚本 确定一个版本,以这个版本的英文资料为主,其他为辅 用 ubuntu 虚拟机 +vim 开发 遇到问题上 stackoverflow

    我的体会: 英语阅读能力第一重要 ruby 基础对 Rails 学习很有帮助,但可以并行进行。 《The Rails (3) Way》是一本非常有价值的书,但好像很少有人提起?《Agile Web Development on Rails》告诉你能做什么,《The Rails Way》告诉你为什么可以这么做。 遇到问题死磕到底,一定可以解决

  • 开发一段时间后发现之前的结构不合理,destory+g 也在用,总觉得该有什么更好的方法来做... stackoverflow 上也有人推荐 rubymine,我去找来试试