• 首先把lib目录加到autoload_pathes config.autoload_paths << Rails.root.join('lib')
    • 其次,文件名要与常量名(类名)对应,因为开发环境rails是根据常量名找需要加载哪个文件的,比如使用类Api::V2::UserController, 要在autoload_paths下面有api/v2/user_controller.rb文件才可以。

    参考 https://guides.rubyonrails.org/autoloading_and_reloading_constants.html

  • 用了一下,通过css loader加载的css在html中不带data-turbolinks-track的属性,页面切换的时候css加载会慢半拍。没有仔细看css loader文档不知道有没有方便加标签属性的方法……

  • Will Ruby kill off Python? at 2019年04月11日

    老外标题党,结尾都说自己都不信,转过来再断章取义……

  • 能招这么多年,起码说明人家业务稳中见长 👍

  • Kernel.autoload

  • 实例变量的一个坑 at 2018年12月17日

    不是实例变量的坑,是def打开一个跟上下文不联通的作用域,不管是不是在singleton_class里,要理解ruby的作用域,代码应该是

    class  C
      @c = 1
      class << C
        def  f
          @c
        end
      end
    end
    
  • strong parameters是让你设一个 white list allow list,让你标记传到action里面的参数哪个是可以接受的,并不是用来取参数的。

    试一下

    def shipping_charge_temp_params
        params.permit(:name, :shipping_charge_method_id,
                      shipping_methods: %i[name
                                           base_items base_price
                                           increment_items_unit
                                           increment_items_unit_price])
    end
    
  • 又看了一眼,教程的Gemfile里有一个minitest的plugin minitest-reporters,minitest报错堆栈里就有这个gem

    这个教程好害人,要不是你贴的信息全,没人知道为什么。

  • 应该是教程的Gemfile有问题,导致minitest fail的时候测试框架本身出错了,没法继续。

    简单fix就是用rails new之后生成的Gemfile,不要用教程的Gemfile。

    你要想深究原因,可以/home/sws/.rvm/gems/ruby-2.4.4/gems/railties-5.1.2/lib/rails/test_unit/reporter.rb设个断点自己debug一下,鉴于你是新手,还是不要折腾了。

  • 你跑测试的输出贴全了看一下,最后会有一个结果的,4个test肯定都会跑