【问题标题】:Permission denied @ dir_s_mkdir - /spec (Errno::EACCES)权限被拒绝 @ dir_s_mkdir - /spec (Errno::EACCES)
【发布时间】:2016-05-07 16:51:06
【问题描述】:

运行简单的命令

rails g model User

导致:

→ bundle exec rails g model User
      invoke  active_record
      create    db/migrate/20160128191020_create_users.rb
      create    app/models/user.rb
      invoke    rspec
      create      spec/models/user_spec.rb
      invoke      factory_girl
      create        /spec/factories/users.rb
/Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:252:in `mkdir': Permission denied @ dir_s_mkdir - /spec (Errno::EACCES)
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:252:in `fu_mkdir'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:226:in `block (2 levels) in mkdir_p'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:224:in `reverse_each'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:224:in `block in mkdir_p'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:210:in `each'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/2.2.0/fileutils.rb:210:in `mkdir_p'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/actions/create_file.rb:61:in `block in invoke!'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/actions/empty_directory.rb:116:in `call'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/actions/empty_directory.rb:116:in `invoke_with_conflict_check'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/actions/create_file.rb:60:in `invoke!'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/actions.rb:94:in `action'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/actions/create_file.rb:25:in `create_file'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/factory_girl_rails-4.5.0/lib/generators/factory_girl/model/model_generator.rb:46:in `create_factory_file'
    from /Users/khataev/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/factory_girl_rails-4.5.0/lib/generators/factory_girl/model/model_generator.rb:25:in `create_fixture_file'

省略其余部分。

我正在使用 factory girls railsspecspec/factories folders' 权限为 drwxr-xr-x(755,更改为 777 无效)。重新安装factory_girl_rails 没有效果。 Ruby 2.2.2(已经试过不同的版本)

Tired this, no effect

【问题讨论】:

  • /spec/factories/users.rb 是问题所在,它试图在根目录下创建spec 目录。但是为什么会这样呢? :)
  • 有没有机会为“FactoryGirl.definition_file_paths”设置一个值?看起来“/spec/factories”的值已经覆盖了“spec/factories”(即根级别而不是相对于当前文件夹)。

标签: ruby-on-rails ruby factory-bot


【解决方案1】:

也许你做到了:

# config/application.rb
config.generators do |g|
  g.fixture_replacement :factory_girl, dir: "/spec/factories"
end

如果是这样,您需要将其从“/spec/factories”更改为“spec/factories”

参考:https://github.com/everydayrails/rails-4-1-rspec-3-0/blob/master/config/application.rb

【讨论】:

    【解决方案2】:

    您需要授予系统根用户访问所需目录的权限

    sudo chmod 777 -R your_project_directory_to_be_access
    

    在您的情况下,您可以使用:

    sudo chmod 777 -R /spec/
    

    出于安全原因,请记住:

    chmod 777 赋予每个人读、写和执行权限,这对于大多数问题来说绝对是太多了。

    【讨论】:

      猜你喜欢
      • 2015-07-20
      • 2016-03-14
      • 2018-12-13
      • 2016-01-19
      • 2015-12-06
      • 2015-12-18
      • 2021-11-13
      • 2011-12-28
      • 2014-01-24
      相关资源
      最近更新 更多