code-and-effect / effective_datatables

An effective ActiveRecord to Datatables dsl for Ruby on Rails. Make intelligent tables quickly.
MIT License
133 stars 36 forks source link

Add support for ruby 3.1 keyword arguments #170

Closed Nerian closed 2 years ago

Nerian commented 2 years ago

Hello,

This PR adds support for Ruby 3 keyword arguments.

Without this I get an error:

Failure/Error: l(charge.date, format: :long)

     ActionView::Template::Error:
       wrong number of arguments (given 2, expected 1)
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/datatable_dsl_tool.rb:37:in `method_missing'
     # ./app/datatable/charges_datatable.rb:16:in `block (2 levels) in <class:ChargesDatatable>'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:71:in `instance_exec'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:71:in `block (2 levels) in format'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:57:in `each'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:57:in `block in format'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:56:in `each'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:56:in `each_with_index'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/format.rb:56:in `format'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/effective_datatable/compute.rb:57:in `compute'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/datatable.rb:153:in `to_json'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/helpers/effective_datatables_helper.rb:60:in `render_datatable'
     # ./app/views/invoicing/invoices/show.html.slim:37:in `_app_views_invoicing_invoices_show_html_slim___3251406276111731776_151720'
     # <internal:kernel>:90:in `tap'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/actiontext-7.0.2.3/lib/action_text/rendering.rb:20:in `with_renderer'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/actiontext-7.0.2.3/lib/action_text/engine.rb:69:in `block (4 levels) in <class:Engine>'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/etag.rb:27:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/railties-7.0.2.3/lib/rails/rack/logger.rb:36:in `call_app'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/railties-7.0.2.3/lib/rails/rack/logger.rb:25:in `block in call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/railties-7.0.2.3/lib/rails/rack/logger.rb:25:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/method_override.rb:24:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/runtime.rb:22:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/lock.rb:18:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/railties-7.0.2.3/lib/rails/engine.rb:530:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/urlmap.rb:74:in `block in call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/urlmap.rb:58:in `each'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/urlmap.rb:58:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/capybara-3.36.0/lib/capybara/server/middleware.rb:60:in `call'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/rack-2.2.3/lib/rack/handler/webrick.rb:95:in `service'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/webrick-1.7.0/lib/webrick/httpserver.rb:140:in `service'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/webrick-1.7.0/lib/webrick/httpserver.rb:96:in `run'
     # /Users/Nerian/.rvm/gems/ruby-3.1.1/gems/webrick-1.7.0/lib/webrick/server.rb:310:in `block in start_thread'
     # ------------------
     # --- Caused by: ---
     # ArgumentError:
     #   wrong number of arguments (given 2, expected 1)
     #   /Users/Nerian/.rvm/gems/ruby-3.1.1/bundler/gems/effective_datatables-af437695ac85/app/models/effective/datatable_dsl_tool.rb:37:in `method_missing'

For code like this:

    col :date, label: I18n.t('general.date') do |charge|
      l(charge.date, format: :long)
    end