宝石を更新し、エラーが発生するようになりました:ActionView :: Template :: Error(引数の数が間違っています(2対1)):

ジャスティン

プロジェクトをRails3.2からRails4.0に更新しようとしています。いくつかのgemを更新した後、「rails」の実行時にハッシュを使用して#scopeを呼び出すなど、いくつかのエラーと非推奨が発生しました。修正後、「rails s」は機能しますが、ローカルホストにアクセスしてWebアプリケーションをテストしようとすると、次のエラーが発生します。

    ActionView::Template::Error (wrong number of arguments (2 for 1)):
     5:       %th Activities
     6:       %th.w140
     7:   %tbody
     8:     - (list = latest_updates_list(@filter[:latest_updates_options])).each do |item|
     9:       %tr= latest_updates_item_helper(item)
    10:
    11:     - if list.length == 0
  app/helpers/dashboard_helper.rb:33:in `latest_updates_list'
  app/views/dashboard/_index.html.haml:8:in `_app_views_dashboard__index_html_haml__3401685304950220196_70213556660400'
  app/views/dashboard/index.html.haml:6:in `_app_views_dashboard_index_html_haml___725444960778701440_70213519668520'

これは「latest_updates_list」メソッドです。

def latest_updates_list(option=nil)
    client_ids = current_user.actual_client_ids

    services = {}
    Service.where(:client_id => client_ids).each{|s| services[s.id] = {:name => s.name, :frequency_name => s.frequency_short_text, :per_hour => s.per_hour?} }

    reports = []
    invoices = []
    tickets = []
    employees = []

    list = []
    case option.to_sym
    when :reports
      reports = Report.for_latest_updates(client_ids) if (user_admin? || user_can_report?)
    when :invoices
      invoices = Invoice.for_latest_updates(client_ids) if (user_admin? || user_can_invoice?)
    when :tickets
      tickets = Ticket.for_latest_updates(client_ids) if (user_admin? || user_can_ticket?)
    when :employees
      employees = Employee.for_latest_updates(current_user.filter_client_id, client_ids) if user_admin?
    else
      reports = Report.for_latest_updates(client_ids) if (user_admin? || user_can_report?)
      invoices = Invoice.for_latest_updates(client_ids) if (user_admin? || user_can_invoice?)
      tickets = Ticket.for_latest_updates(client_ids) if (user_admin? || user_can_ticket?)
      employees = Employee.for_latest_updates(current_user.filter_client_id, client_ids) if user_admin?
    end

    list += reports.collect do |r|
       {
         :date => r.updated_at,
         :entity => 1,
         :status_text => latest_update_report_status_text(r),
         :reports_services_text => latest_updates_reports_services_text(r, r.reports_services),
         :report_id => r.id}
    end unless reports.empty?

    list += invoices.collect do |i|
       {
         :date => i.updated_at,
         :entity => 2,
         :status_text => latest_update_invoice_status_text(i),
         :invoice_reports_services_text => latest_updates_invoice_reports_services_text(services, i.reports),
         :invoice_id => i.id}
    end unless invoices.empty?

    list += tickets.collect do |t|
       {
         :date => latest_update_ticket_date(t),
         :entity => 3,
         :status_text => latest_update_ticket_status_text(t),
         :description => t.description_text,
         :ticket_id => t.id}
    end unless tickets.empty?

    list += employees.collect do |e|
       {
         :date => e.updated_at,
         :entity => 4,
         :description => e.text_for_stream,
         :employee_id => e.employee_id}
    end unless employees.empty?

    sorted_list = list.sort{|a, b| a[:date].to_i <=> b[:date].to_i}
    list = sorted_list.reverse!
    list = list.take(50)
  end

これは「latest_updates_list」の33行目です。

    Service.where(:client_id => client_ids).each{|s| services[s.id] = {:name => s.name, :frequency_name => s.frequency_short_text, :per_hour => s.per_hour?} }

そして、これが私のGemfile.lockです

GIT
  remote: git://github.com/rails/sass-rails.git
  revision: 8588b7b31d708a91516ae3bda0f57601a860ec28
  branch: 4-0-stable
  specs:
    sass-rails (4.0.5)
      railties (>= 4.0.0, < 5.0)
      sass (~> 3.2.2)
      sprockets (~> 2.8, < 3.0)
      sprockets-rails (~> 2.0)

GIT
  remote: git://github.com/syreclabs/ckeditor.git
  revision: f0d175a66876d9b3453fb47a7914789660a36a15
  specs:
    ckeditor (4.0.6)
      mime-types
      orm_adapter

GIT
  remote: https://github.com/bearded-nemesis/heroku-rglpk.git
  revision: 760859ce23c6e9d253324a584da6ee351700c48f
  specs:
    heroku-rglpk (0.2.1)

PATH
  remote: lib/plugins/xeroizer-payroll-merged
  specs:
    xeroizer (2.16.5)
      activesupport
      builder (>= 2.1.2)
      i18n
      nokogiri
      oauth (>= 0.4.5)
      tzinfo

GEM
  remote: http://rubygems.org/
  specs:
    actionmailer (4.0.0)
      actionpack (= 4.0.0)
      mail (~> 2.5.3)
    actionpack (4.0.0)
      activesupport (= 4.0.0)
      builder (~> 3.1.0)
      erubis (~> 2.7.0)
      rack (~> 1.5.2)
      rack-test (~> 0.6.2)
    activemodel (4.0.0)
      activesupport (= 4.0.0)
      builder (~> 3.1.0)
    activerecord (4.0.0)
      activemodel (= 4.0.0)
      activerecord-deprecated_finders (~> 1.0.2)
      activesupport (= 4.0.0)
      arel (~> 4.0.0)
    activerecord-deprecated_finders (1.0.4)
    activesupport (4.0.0)
      i18n (~> 0.6, >= 0.6.4)
      minitest (~> 4.2)
      multi_json (~> 1.3)
      thread_safe (~> 0.1)
      tzinfo (~> 0.3.37)
    addressable (2.3.6)
    annotate (2.6.3)
      activerecord (>= 2.3.0)
      rake (>= 0.8.7)
    arel (4.0.2)
    authlogic (3.4.1)
      activerecord (>= 3.2)
      activesupport (>= 3.2)
      request_store (~> 1.0.5)
    autoparse (0.3.3)
      addressable (>= 2.3.1)
      extlib (>= 0.9.15)
      multi_json (>= 1.0.0)
    awesome_print (1.2.0)
    aws-eventstream (1.0.2)
    aws-partitions (1.149.0)
    aws-sdk (1.38.0)
      json (~> 1.4)
      nokogiri (>= 1.4.4)
      uuidtools (~> 2.1)
    aws-sdk-core (3.48.3)
      aws-eventstream (~> 1.0, >= 1.0.2)
      aws-partitions (~> 1.0)
      aws-sigv4 (~> 1.1)
      jmespath (~> 1.0)
    aws-sdk-kms (1.16.0)
      aws-sdk-core (~> 3, >= 3.48.2)
      aws-sigv4 (~> 1.1)
    aws-sdk-s3 (1.36.0)
      aws-sdk-core (~> 3, >= 3.48.2)
      aws-sdk-kms (~> 1)
      aws-sigv4 (~> 1.0)
    aws-sigv4 (1.1.0)
      aws-eventstream (~> 1.0, >= 1.0.2)
    bcrypt (3.1.7)
    bcrypt-ruby (3.1.5)
      bcrypt (>= 3.1.3)
    builder (3.1.4)
    capybara (2.2.1)
      mime-types (>= 1.16)
      nokogiri (>= 1.3.3)
      rack (>= 1.0.0)
      rack-test (>= 0.5.4)
      xpath (~> 2.0)
    celluloid (0.15.2)
      timers (~> 1.1.0)
    celluloid-io (0.15.0)
      celluloid (>= 0.15.0)
      nio4r (>= 0.5.0)
    climate_control (0.0.3)
      activesupport (>= 3.0)
    cocaine (0.5.4)
      climate_control (>= 0.0.3, < 1.0)
    coderay (1.1.0)
    coffee-rails (4.0.1)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0, < 5.0)
    coffee-script (2.2.0)
      coffee-script-source
      execjs
    coffee-script-source (1.7.0)
    concurrent-ruby (1.1.5)
    daemons (1.1.9)
    dalli (2.7.0)
    database_cleaner (1.2.0)
    delayed_job (4.0.1)
      activesupport (>= 3.0, < 4.2)
    delayed_job_active_record (4.0.1)
      activerecord (>= 3.0, < 4.2)
      delayed_job (>= 3.0, < 4.1)
    diff-lcs (1.2.5)
    dotenv (0.7.0)
    erubis (2.7.0)
    eventmachine (1.0.3)
    exception_notification (4.0.1)
      actionmailer (>= 3.0.4)
      activesupport (>= 3.0.4)
    execjs (2.0.2)
    extlib (0.9.16)
    factory_girl (4.4.0)
      activesupport (>= 3.0.0)
    factory_girl_rails (4.4.1)
      factory_girl (~> 4.4.0)
      railties (>= 3.0.0)
    faraday (0.9.0)
      multipart-post (>= 1.2, < 3)
    ffi (1.9.0)
    ffi-compiler (0.1.3)
      ffi (>= 1.0.0)
      rake
    font_assets (0.1.11)
      rack
    foreigner (1.6.1)
      activerecord (>= 3.0.0)
    foreman (0.64.0)
      dotenv (~> 0.7.0)
      thor (>= 0.13.6)
    formatador (0.2.4)
    google-api-client (0.7.1)
      addressable (>= 2.3.2)
      autoparse (>= 0.3.3)
      extlib (>= 0.9.15)
      faraday (>= 0.9.0)
      jwt (>= 0.1.5)
      launchy (>= 2.1.1)
      multi_json (>= 1.0.0)
      retriable (>= 1.4)
      signet (>= 0.5.0)
      uuidtools (>= 2.1.0)
    grocer (0.5.0)
    guard (2.6.0)
      formatador (>= 0.2.4)
      listen (~> 2.7)
      lumberjack (~> 1.0)
      pry (>= 0.9.12)
      thor (>= 0.18.1)
    guard-rspec (4.2.8)
      guard (~> 2.1)
      rspec (>= 2.14, < 4.0)
    haml (4.0.5)
      tilt
    haml-rails (0.4)
      actionpack (>= 3.1, < 4.1)
      activesupport (>= 3.1, < 4.1)
      haml (>= 3.1, < 4.1)
      railties (>= 3.1, < 4.1)
    hike (1.2.3)
    i18n (0.9.5)
      concurrent-ruby (~> 1.0)
    jmespath (1.4.0)
    jquery-rails (3.1.0)
      railties (>= 3.0, < 5.0)
      thor (>= 0.14, < 2.0)
    jquery-ui-rails (4.2.1)
      railties (>= 3.2.16)
    json (1.8.6)
    jwt (0.1.11)
      multi_json (>= 1.5)
    launchy (2.4.2)
      addressable (~> 2.3)
    listen (2.7.1)
      celluloid (>= 0.15.2)
      celluloid-io (>= 0.15.0)
      rb-fsevent (>= 0.9.3)
      rb-inotify (>= 0.9)
    lumberjack (1.0.5)
    mail (2.5.5)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    memcachier (0.0.2)
    method_source (0.8.2)
    mime-types (1.25.1)
    mini_portile (0.5.3)
    minitest (4.7.5)
    multi_json (1.13.1)
    multipart-post (2.0.0)
    newrelic_rpm (3.7.3.204)
    nio4r (1.2.1)
    nokogiri (1.6.1)
      mini_portile (~> 0.5.0)
    oauth (0.5.3)
    orm_adapter (0.5.0)
    paperclip (3.5.4)
      activemodel (>= 3.0.0)
      activesupport (>= 3.0.0)
      cocaine (~> 0.5.3)
      mime-types
    pg (0.17.1)
    pg_array_parser (0.0.9)
    polyglot (0.3.5)
    postgres_ext (2.0.0)
      activerecord (~> 4.0.0)
      arel (~> 4.0.0)
      pg_array_parser (~> 0.0.9)
    protected_attributes (1.0.3)
      activemodel (>= 4.0.0, < 5.0)
    pry (0.9.12.6)
      coderay (~> 1.0)
      method_source (~> 0.8)
      slop (~> 3.4)
    quiet_assets (1.0.2)
      railties (>= 3.1, < 5.0)
    rack (1.5.5)
    rack-cors (0.2.9)
    rack-test (0.6.3)
      rack (>= 1.0)
    rails (4.0.0)
      actionmailer (= 4.0.0)
      actionpack (= 4.0.0)
      activerecord (= 4.0.0)
      activesupport (= 4.0.0)
      bundler (>= 1.3.0, < 2.0)
      railties (= 4.0.0)
      sprockets-rails (~> 2.0.0)
    rails_12factor (0.0.2)
      rails_serve_static_assets
      rails_stdout_logging
    rails_serve_static_assets (0.0.2)
    rails_stdout_logging (0.0.3)
    railties (4.0.0)
      actionpack (= 4.0.0)
      activesupport (= 4.0.0)
      rake (>= 0.8.7)
      thor (>= 0.18.1, < 2.0)
    rake (12.3.2)
    rb-fsevent (0.9.4)
    rb-inotify (0.9.3)
      ffi (>= 0.5.0)
    request_store (1.0.5)
    retriable (1.4.1)
    rspec (2.14.1)
      rspec-core (~> 2.14.0)
      rspec-expectations (~> 2.14.0)
      rspec-mocks (~> 2.14.0)
    rspec-core (2.14.8)
    rspec-expectations (2.14.5)
      diff-lcs (>= 1.1.3, < 2.0)
    rspec-mocks (2.14.6)
    rspec-rails (2.14.2)
      actionpack (>= 3.0)
      activemodel (>= 3.0)
      activesupport (>= 3.0)
      railties (>= 3.0)
      rspec-core (~> 2.14.0)
      rspec-expectations (~> 2.14.0)
      rspec-mocks (~> 2.14.0)
    rubyzip (1.1.7)
    sass (3.2.19)
    scrypt (1.2.1)
      ffi-compiler (>= 0.0.2)
      rake
    shortener (0.3.0)
      rails (>= 3.0.7)
    signet (0.5.0)
      addressable (>= 2.2.3)
      faraday (>= 0.9.0.rc5)
      jwt (>= 0.1.5)
      multi_json (>= 1.0.0)
    slop (3.5.0)
    spork (0.9.2)
    sprockets (2.12.5)
      hike (~> 1.2)
      multi_json (~> 1.0)
      rack (~> 1.0)
      tilt (~> 1.1, != 1.3.0)
    sprockets-rails (2.0.1)
      actionpack (>= 3.0)
      activesupport (>= 3.0)
      sprockets (~> 2.8)
    strip_attributes (1.5.1)
      activemodel (>= 3.0, < 5.0)
    thin (1.6.2)
      daemons (>= 1.0.9)
      eventmachine (>= 1.0.0)
      rack (>= 1.0.0)
    thor (0.20.3)
    thread_safe (0.3.6)
    tilt (1.4.1)
    timers (1.1.0)
    treetop (1.4.15)
      polyglot
      polyglot (>= 0.3.1)
    trim_blobs (0.0.1)
      activerecord (>= 3.2.0)
    twilio-ruby (3.11.5)
      builder (>= 2.1.2)
      jwt (>= 0.1.2)
      multi_json (>= 1.3.0)
    tzinfo (0.3.55)
    uglifier (2.5.0)
      execjs (>= 0.3.0)
      json (>= 1.8.0)
    uuidtools (2.1.4)
    xpath (2.0.0)
      nokogiri (~> 1.3)
    yui-compressor (0.12.0)

PLATFORMS
  ruby

DEPENDENCIES
  annotate
  authlogic
  awesome_print
  aws-sdk
  aws-sdk-s3
  bcrypt-ruby (~> 3.1.2)
  capybara
  ckeditor!
  coffee-rails
  dalli
  database_cleaner
  delayed_job_active_record
  exception_notification
  factory_girl_rails
  ffi (= 1.9.0)
  font_assets
  foreigner
  foreman
  google-api-client
  grocer
  guard-rspec
  haml
  haml-rails
  heroku-rglpk!
  jquery-rails
  jquery-ui-rails
  memcachier
  multipart-post
  newrelic_rpm
  paperclip (~> 3.0)
  pg
  postgres_ext
  protected_attributes
  quiet_assets
  rack-cors
  rails (= 4.0)
  rails_12factor
  rb-fsevent
  rspec
  rspec-core
  rspec-mocks
  rspec-rails
  rubyzip (~> 1.1.0)
  sass-rails!
  scrypt
  shortener
  spork
  strip_attributes
  thin
  trim_blobs
  twilio-ruby
  uglifier
  xeroizer!
  yui-compressor

RUBY VERSION
   ruby 2.1.10p492

BUNDLED WITH
   1.17.3

以前は機能していたので、これらのファイルでは何も変更していないので、これはgemの問題であるに違いないと思います。

これは私が更新した宝石のコピーです:

Using activesupport 4.0.0 (was 3.2.18)
Using builder 3.1.4 (was 3.0.4)

Using rack 1.5.5 (was 1.4.5)

Using actionpack 4.0.0 (was 3.2.18)

Using actionmailer 4.0.0 (was 3.2.18)
Using activemodel 4.0.0 (was 3.2.18)

Using activerecord-deprecated_finders 1.0.4

Using arel 4.0.2 (was 3.0.3)
Using activerecord 4.0.0 (was 3.2.18)

Using railties 4.0.0 (was 3.2.18)
Using coffee-rails 4.0.1 (was 3.2.2)

Using postgres_ext 2.0.0 (was 1.0.0)

Using sprockets 2.8.3 (was 2.2.2)
Using sprockets-rails 2.0.1
Using rails 4.0.0 (was 3.2.18)

Using sass 3.2.19 (was 3.3.5)
Using sass-rails 4.0.5 (was 3.2.6)

これは、binding.pryを使用して「client_ids」を出力したときに得られるものです。

=> [76,
 73,
 64,
 51,
 22,
 67,
 75,
 36,
 83,
 32,
 62,
 55,
 18,
 20,
 60,
 69,
 68,
 1,
 9,
 77,
 78,
 33,
 57,
 59,
 41,
 63,
 43,
 53,
 71,
 66,
 38,
 58,
 61,
 80,
 6,
 65,
 70,
 81,
 74,
 82,
 79,
 42,
 56,
 50,
 49,
 47,
 45,
 44,
 48]

そして、私がその行を呼び出すためにpryを使用する場合:

[7] pry(#<#<Class:0x007fecc2fdafc8>>)> Service.where(:client_id => client_ids).each{|s| services[s.id] = {:name => s.name, :frequency_name => s.frequency_short_text, :per_hour => s.per_hour?} }
ArgumentError: wrong number of arguments (2 for 1)
from /Users/justin/.rvm/gems/ruby-2.1.10/gems/postgres_ext-2.0.0/lib/postgres_ext/arel/visitors/to_sql.rb:6:in `visit_Array'
ネイト

あなたはあなたのpostgres_ext宝石をアップグレードする必要があります

現在、代わりにArel 4.0.2があり、PostgresExt2.0.0がインストールされています。

PostgresExt2.1.3に「Arel4.0.1の問題を修正する」と書かれていることがわかります。https://github.com/DavyJonesLocker/postgres_ext/blob/master/CHANGELOG.md#213

お使いのバージョンのPostgresExtは、インストールしたRailsのバージョンと互換性がありません。最近追加したスタックトレースが原因で、このエピファニーに到達しました。

from /Users/justin/.rvm/gems/ruby-2.1.10/gems/postgres_ext-2.0.0/lib/postgres_ext/arel/visitors/to_sql.rb:6:in `visit_Array'

問題は、PostgresExtgemの引数の数が間違っていることに注意してください。

このコミットについて何か面白いことに気づきましたか?

https://github.com/DavyJonesLocker/postgres_ext/commit/4ac6184d4bbfd763044b28f98344a02cf688cca3

そのvisit_Arrayメソッドを取り、1ではなく2つの引数を使用するようにします。それが問題です。ActiveRecordは2つの引数を使用してArelメソッドを呼び出そうとしていますが、PostgresExtはそのメソッドをオーバーライドしていくつかの機能を追加し、それらのオーバーライドは1つの引数のみを取ります。そのため、コア機能をオーバーライドするこれらの種類のgemは、使用するのが少し危険です。Railsがgemの内部ビットを変更すると、このPostgresExt gemがすぐに壊れる可能性があるため、適切なテストカバレッジが必要です。

また、この宝石はもはや維持されていないと言われているので、この宝石から離れることを検討する必要があります。

私の同僚は最近、ActiveRecordExtendedと呼ばれるこの宝石を見せてくれました(Postgresのみであることを考えると奇妙な名前ですが、まあまあ)。使ったことがないので保証できませんが、PostgesExtと同じように動作しているようですが、維持されています。

https://github.com/georgekaraszi/ActiveRecordExtended

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ