Ruby on rails 突然参数错误:种子设定时UTF-8中的字节序列无效
在我的Rails应用程序上工作时,我正在尝试一些裁剪图像的方法,我从,回到我以前拥有的,然后到这个,在完成所有设置后,我决定重新启动数据库并对其进行种子设定,但是当我尝试对数据库进行种子设定时,我得到了Ruby on rails 突然参数错误:种子设定时UTF-8中的字节序列无效,ruby-on-rails,ruby,utf-8,seeding,Ruby On Rails,Ruby,Utf 8,Seeding,在我的Rails应用程序上工作时,我正在尝试一些裁剪图像的方法,我从,回到我以前拥有的,然后到这个,在完成所有设置后,我决定重新启动数据库并对其进行种子设定,但是当我尝试对数据库进行种子设定时,我得到了ArgumentError:UTF-8中的无效字节序列 在一些小型研究之前和之后,我从未遇到过这个错误,我发现这是由于一些字符无法被ruby读取,然而,在浏览了我的代码之后,我发现在我开始裁剪图像之前和进一步检查之后,我还没有找到原因 我还没有学会如何读取和跟踪rails/rake bug,这也没
ArgumentError:UTF-8中的无效字节序列
在一些小型研究之前和之后,我从未遇到过这个错误,我发现这是由于一些字符无法被ruby读取,然而,在浏览了我的代码之后,我发现在我开始裁剪图像之前和进一步检查之后,我还没有找到原因
我还没有学会如何读取和跟踪rails/rake bug,这也没有什么帮助,我得到的是:
rails aborted!
ArgumentError: invalid byte sequence in UTF-8
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/core_ext/object/blank.rb:118:in `==='
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/core_ext/object/blank.rb:118:in `blank?'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/sanitized_file.rb:131:in `is_path?'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/sanitized_file.rb:97:in `size'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/sanitized_file.rb:140:in `empty?'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/uploader/cache.rb:120:in `cache!'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/mounter.rb:44:in `block in cache'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/mounter.rb:42:in `each'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/mounter.rb:42:in `map'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/mounter.rb:42:in `cache'
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/mount.rb:300:in `main_image='
/usr/local/rvm/gems/ruby-2.3.0/gems/carrierwave-1.1.0/lib/carrierwave/orm/activerecord.rb:70:in `main_image='
/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:46:in `public_send'
/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:46:in `_assign_attribute'
/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:40:in `block in _assign_attributes'
/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `each'
/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:39:in `_assign_attributes'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/attribute_assignment.rb:26:in `_assign_attributes'
/usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.1/lib/active_model/attribute_assignment.rb:33:in `assign_attributes'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/core.rb:319:in `initialize'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/inheritance.rb:65:in `new'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/persistence.rb:50:in `create!'
/home/ubuntu/workspace/db/seeds.rb:60:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `block in load'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
/usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.1/lib/rails/engine.rb:549:in `load_seed'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/tasks/database_tasks.rb:268:in `load_seed'
/usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.1/lib/active_record/railties/databases.rake:196:in `block (2 levels) in <top (required)>'
/usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.1/lib/rails/commands/rake_proxy.rb:14:in `block in run_rake_task'
/usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.1/lib/rails/commands/rake_proxy.rb:11:in `run_rake_task'
/usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:51:in `run_command!'
/usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
/home/ubuntu/workspace/bin/rails:9:in `require'
/home/ubuntu/workspace/bin/rails:9:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/client/rails.rb:28:in `load'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/client/rails.rb:28:in `call'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/client/command.rb:7:in `call'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/client.rb:30:in `run'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/bin/spring:49:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/binstub.rb:11:in `load'
/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/binstub.rb:11:in `<top (required)>'
/home/ubuntu/workspace/bin/spring:15:in `require'
/home/ubuntu/workspace/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
重要编辑:因此我决定返回到以前的提交,不再处理此问题,出于某种原因,错误不断出现,这让我相信我使用的平台Cloud9存在问题,我还了解到,这不是Rails 5.0上应该出现的问题。不确定,这只是请求URL中的无效字节序列,请尝试以下方法:
添加到您的gemfilegem'rack-utf8\u Sanitarizer'
或gem'handle\u无效的\u百分比\u编码请求'
或gem'utf8 cleaner'
在运行bundle install
后,我发现了问题的原因,我使用mount\u uploaders
进行单一上传,将上载设置为数组,从而创建错误。将其更改为mount\u uploader
是解决方案,您确实需要注意这些细节,好吧,这是您的经验教训。我建议关闭这个问题,除非它对新手有些帮助。装载上传者需要一个数组,因此您的seed.rb文件应该设置为接受数组
它应该是这样的:Model.create(images:[image1.jpg])
不是这样的:Model.create(images:image1.jpg)
它们都不起作用,仍然会出现相同的错误。这真的很奇怪。在你的config/application.rb中添加以下行:config.middleware.use'Utf8Sanitizer'
我得到NameError:main:Object未定义的局部变量或方法'config'
即使在安装了Gem之后,也要在app/middleware中将utf8\u sanitizer.rb添加到你的Rails 3.2项目中,通过我返回的这个链接到以前的提交,现在我也得到了这些错误,显然rails应该总是自动处理这个问题,除非我使用的是2.0之前的版本,现在我使用的是5.0,知道为什么会发生这种情况吗?你使用的是什么版本的Ruby?您是否确保编辑器以UTF-8格式保存文件?该模型的种子文件是什么样子的?将种子添加到问题中,我使用的是ruby 2.3.0,如何确保编辑器以UTF-8保存?直到现在,我一直认为这是理所当然的。
Event.create!(
name: " 1",
spanish_description: "El mejor programa para este sábado con los peques ! #kids #gratis #petfriendly. En Kuchitril. De 6 a 10 pm. #localmarket #tendencias #buenavibra. #corranlavoz!",
english_description: "El mejor programa para este sábado con los peques ! #kids #gratis #petfriendly. En Kuchitril. De 6 a 10 pm. #localmarket #tendencias #buenavibra. #corranlavoz!",
place_name: "mamita's",
place_type: "beach club",
address: "Calle 28 Norte Mza 10, Lote 8, Centro",
county: 'meh',
city: "Playa del Carmen",
state: "Quintana Roo",
postal_code: 77710,
user_id: 1,
main_image: File.open(File.join(Rails.root, 'test.jpg')),
sub_images: [File.open(File.join(Rails.root, 'chinchi.jpg'))],
eventdates_attributes:[{
start_date: Time.now.in_time_zone("Eastern Time (US & Canada)"),
finish_date: Time.now.in_time_zone("Eastern Time (US & Canada)"),
start_hour: "08:00am",
finish_hour: "11:00am",
}],
tickets_attributes:[{
ticket_type: "Solo una vez",
price: 100,
currency: "mxn",
quantity: 150,
description: "Un boleto muy divertido!"
}, {
ticket_type: "Otra vez",
price: 150,
currency: "mxn",
quantity: 150,
description: "Un boleto muy divertido!"
}]
)