• 存储网络图片 at 2018年06月18日

    你在浏览器里能访问是因为你 F Q 了,但是你的 ruby 代码并没有,于是你的请求被伟大的 GFW 拦掉了

  • 存储网络图片 at 2018年06月18日

    直接在命令行里 curl 这个图片的 url,有报错么

  • cd 到一个你有权限的目录去执行,或者修改当前目录的权限

  • 你没有当前目录的权限啊

  • extract_options! 实现的疑问 at 2018年06月16日

    我觉得就得这样写才对呀

    你不需要非得把 Array#extract_options!Hash#extractable_options? 放在一起来讨论,Hash#extractable_options? 也可能在其他场景下被调用,它具体做什么对调用者而言是不 care 的,可能很简单也可以很复杂,只是这里碰巧只有一句 instance_of?(Hash)

    所以你问 Array#extract_options! 为什么不直接使用 instance_of?(Hash)?因为对于 Array 来说,它不需要关心 Hash#extractable_options? 到底做了什么判断,于它而言这只是一支 API,能返回它想要的结果就行了。万一有一天 Hash#extractable_options? 的代码发生了变动,它自己也不需要做任何改动

    相反,如果使用 instance_of?(Hash),那反而为以后多埋下了一个陷阱。请时刻记得行为守则 —— DRY

  • 环境证书问题,怎么解决我布吉岛,因为你用的 Windows

  • 大多数情况下,并不为啥,只是一个选择或喜好

    只有到了具体的场景里面再去讨论 MongoDB or Mysql 才是有意义的

  • https://github.com/ctran/annotate_models

    和你想的相反,那个是根据数据库字段生成的,就是给人看的,数据库的字段是 migration 生成的

  • 我来提个案(可能是馊的):OpenResty + Kafka + elasticsearch + Kibana

    好像是要牵扯很多……

  • 关于权限控制的问题 at 2018年06月14日

    pundit、cancancan 核心是为开发者提供一套集中的、有约定的权限管理机制,避免大家在之后的开发中『自由发挥』导致后期权限根本无法管理

    如果你能很好的保证你现在这套机制不会成为以后的障碍或者说这个项目不存在多人协作带来的问题,那么,开心就好 ~

  • 这篇文章最初是针对 Rails 4 写的,发现很多内容已经过时了

    现已按 Rails 5 的情况更新了一下,以免误人子弟 😅

  • 虽然我用不上,但还是支持一下

    Go 版本的不需要装环境啊 ~ 不过 那个 Go 版本的作者好像没有 release 编译好的文件,大概也是懒得弄了

  • COPY 完成的那一步有生成一层中间镜像

    直接 run 那个镜像,手动去执行下命令,看看到底发生了什么,感觉是你的镜像中却了什么东西

    另外,部署用的镜像建议加上 --deployment 或者 --frozen

  • 我这边几个指向 github 的 gem,并没有遇到你说的问题

    而且看上去你在 Gemfile 里仍旧使用着 git://

  • 没有留空行吧

  • 所以说有点歧义嘛,之前的说法容易让人理解为:『fork 可以共享所有数据(包括修改也可以)』😜

    @huacnlee 我这边表情全挂了,浏览器没报错,返回也全是 200,但图全是裂的

  • 『共享』有共同持有的意思,会互相影响

    fork 应该是完整的 copy,在 fork 的子进程里面的操作不会在 master 中反应出来,如果需要通讯还需要借助其他手段

  • 由于fork调用,新的子进程会共享当前Master的所有数据

    这句有点歧义

  • 复制文件 at 2018年06月12日

    /web/bag 本地的绝对路径?这个文件夹存在么

  • 《Rails 5 敏捷开发》/ 《Agile Web Development with Rails 5》

    https://about.ac/books/agile-rails5/ 国内版本的介绍,论坛里也有不少介绍

    或者

    《Ruby on Rails 教程(原书第 4 版)》

    https://railstutorial-china.org 这本更基础点,而且有电子书

  • 复制文件 at 2018年06月12日

    或者 ForkLift 之类的 SFTP 工具了解一下

  • <%= form_tag(resources_path, method: :get) do %>
      <%= label_tag(:resourcetype_id, "Search for:") %>
      <%= text_field_tag(:resourcetype_id) %>
      <%= submit_tag("类型") %>
    <% end %>
    

    这样写就不需要你加 search 方法了,改改 submit 按钮的样式,应该是你最想要的方案(如果我没理解错你想要什么)

  • 两位大大轮番指导了,感觉你还没懂的样子,然我来给你扫个盲:

    核心的问题是:你没有弄明白哪些动作是在服务器上由 Rails 执行的,哪些动作是由浏览器执行的

    Rails 再厉害,它也不能跑在用户的浏览器里,所以到了客户端上,还是得按 HTML + JavaScript 的套路来

    比如,你的这段代码:

    <%= form_tag("/resources/search", method: "get") do %>
      <%= label_tag(:search_id, "Search for:") %>
      <%= text_field_tag(:search_id) %>
      <%= submit_tag("search") %> 
      <!-- 到这里是没有问题的,如果你点 search 你会在 search 的 get 请求里收到你提交的 search_id,用 params[:search_id] 可以取到,而帮你完成取值的是 HTML form 的默认行为 -->
    
      <%= link_to '搜索', search_resources_path(:resourcetype_id => params[:search_id]) %>
      <!-- 这个就,呃…… 这个 a 标签的生成是在服务器渲染时完成的,params[:search_id] 取的是渲染页面时控制器里的 params[:search_id],跟你的表单没有一分钱的关系,不会因为你改了输入框的值这里就跟着变了,而且你应该在 search 方法里用 params[:resourcetype_id] 来取值吧 -->
    
      <%= link_to '类型', resources_path(:resourcetype_id => 2) %>
      <!-- 这个写死,并不知道有什么毛病 -->
    <% end %>
    
  • 兔羊吐神波

    可能你对『庞然巨物』还有点误解,之前有个项目,如果有人更新了前端基础资源,本地 rails s 之后出去喝杯咖啡回来大概就能正常访问了

  • 不用 capistrano 就 20s, 用了就 5min? 明显是设置没对导致 cap 每次都在重新编译静态资源

    打开 cap 的详细日志,看看是不是重新编译所有的静态资源

    你还可以在 assets:precompile 开始的时候手动中断部署,再登录到服务器上最新一个 release 目录下检查原因