如何解决Rails认为我普通的种子数据是文件路径,并抛出“ Errno :: ENOENT:没有这样的文件或目录”
我遇到一个奇怪的错误,即使不涉及文件路径,它也会引发“ Errno :: ENOENT:没有这样的文件或目录”。例如,如果我的种子数据显示:
users = Seller.create([{
username: `Firstuser`
},{
username: `Seconduser`,password: `123`
}
然后我尝试使用db:setup或db:seed,我将收到错误消息:
Errno :: ENOENT:没有这样的文件或目录-Firstuser
/Users/mycomputername/projectname-backend/db/seeds.rb:10:in``'
/Users/mycomputername/projectname-backend/db/seeds.rb:10:in''
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `加载'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `加载'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/railties-6.0.3.3/lib/rails/engine.rb:557:in `load_seed中的块'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/railties-6.0.3.3/lib/rails/engine.rb:675:in `with_inline_jobs'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/railties-6.0.3.3/lib/rails/engine.rb:557:in `load_seed'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/activerecord-6.0.3.3/lib/active_record/tasks/database_tasks.rb:440:in `load_seed'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/activerecord-6.0.3.3/lib/active_record/railties/databases.rake:331:in `
中的块(2个级别)/Users/mycomputername/.rvm/gems/ruby-2.6.1/gems/rake-13.0.1/exe/rake:27:in `'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/bin/ruby_executable_hooks:24:in `eval'
/Users/mycomputername/.rvm/gems/ruby-2.6.1/bin/ruby_executable_hooks:24:in `'
仅因为我已经在先前涉及此错误的问题中看到了它的相关性,所以以下是我添加到gemfile中的gems:
gem "jwt"
gem "faker"
gem 'rails-erd',group: :development
解决方法
在Ruby中,'
和`
做的事情非常不同。
单引号('
)是string literals的定界符,例如:
users = Seller.create([
{ username: 'Firstuser' },{ username: 'Seconduser',password: '123'}
])
反引号(`
)尝试在子shell中调用command并返回其输出,例如:(请参阅Kernel#`
)
`ruby --version`
#=> "ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18]\n"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。