TypeError:没有将Pathname隐式转换为String

时间:2017-09-12 13:24:30

标签: ruby

我想使用此代码运行rake任务:

task :backup_and_delete_old_data => :environment do
      if defined?(Rails)
        require Rails.root + '/config/boot'
      else
        require '../../../config/boot'
      end
      require Rails.root + '/config/environment'

      factory_backup.each do |factory_data|
        puts ">> Backup and delete old #{factory_data.to_s.pluralize.humanize} data..."
        factory_data.factory_backup(backup_and_delete_old_data)
      end
    end

但是当我运行rake任务时,我得到错误:

TypeError: no implicit conversion of Pathname into String

这一行:

require Rails.root + '/config/boot'

你知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您使用以下格式要求使用ruby文件

require File.expand_path('../../../config/environment',  __FILE__)

请指定正确的 ../ 以更正文件的位置。

答案 1 :(得分:0)

您是否尝试过ElasticsearchType? 我想问题是Rails.root.to_sRails.root,而不是PathName,如下图所示。

enter image description here

如果将String强制转换为+,则可以轻松地与Rails.root运算符连接。请检查以下图片。

enter image description here