Ruby on Rails: permission denied when using “rails generate controller welcome”

前端 未结 6 1361
Happy的楠姐
Happy的楠姐 2020-12-25 13:25

I used Ruby on Rails on Red Hat server. When I trying to generate a controller file, I got this error:

[ec2-user@ip-172-31-22-128 testApp4]$ rails generate          


        
相关标签:
6条回答
  • 2020-12-25 13:46

    I solved that problem by running

    sudo chmod -R 1777 /tmp
    

    hope this helps other people like me who would prefer not having to deactivate the spring gem

    0 讨论(0)
  • 2020-12-25 13:52

    I took a look at the library that's trying to write the pid file, lib/spring/env.rb.

    The function in question tries to create a temporary directory at the same location each time unless the XDG_RUNTIME_DIR is set:

    path = Pathname.new(File.join(ENV['XDG_RUNTIME_DIR'] || Dir.tmpdir, "spring"))

    Setting said variable to a unique directory does the trick for me:

    export XDG_RUNTIME_DIR=/tmp/`whoami`
    
    0 讨论(0)
  • 2020-12-25 13:53

    It needs ownership to write the re-write the pid for each server start.

    I had to run it with my full local path & sudo

    $ sudo chmod -R 777 /Users/MyName/Desktop/projects/my_project/tmp/

    0 讨论(0)
  • 2020-12-25 13:57

    I had this same issue when working on a Rails 6 application in Ubuntu 20.04.

    Each time I run the command rails assets:clobber to remove the old assets in public/assets completely, I get the error:

    errno::enotempty: directory not empty @ dir_s_rmdir

    errno::eacces: permission denied @ apply2files

    And the logs pointed the path to the file causing it, which in my a case was the public/packs/manifest.json file.

    I tried deleting it or changing permission but nothing worked. I also tried deleting the tmp directory in the project, but it did not work.

    Here's how I fixed it:

    I listed all the files and directories in that directory using the ls -lh command, which gave me this output:

    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.7K Oct  6 20:29 404.html
    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.7K Oct  6 20:29 422.html
    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem 1.6K Oct  6 20:29 500.html
    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem    0 Oct  6 20:29 apple-touch-icon.png
    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem    0 Oct  6 20:29 apple-touch-icon-precomposed.png
    drwxr-xr-x 3 promisechukwuenyem promisechukwuenyem 4.0K Oct 13 09:20 armstrong_tools
    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem    0 Oct  6 20:29 favicon.ico
    drwxr-xr-x 3 root               root               4.0K Oct  8 13:06 packs
    -rw-rw-r-- 1 promisechukwuenyem promisechukwuenyem   99 Oct  6 20:29 robots.txt
    

    I realized that the permissions for the files and directories were fine, however, the packs directory had root ownership which was seperate from persmission of other files and directories:

    drwxr-xr-x 3 root               root               4.0K Oct  8 13:06 packs
    

    I simply ran the command below to change the ownership from root to promisechukwuenyem:

    sudo chown -R promisechukwuenyem:promisechukwuenyem packs/
    

    Now when I ran the command rails assets:clobber to remove the old assets in public/assets completely, it worked just fine.

    That's all.

    I hope this helps

    0 讨论(0)
  • 2020-12-25 14:01

    Missing permission for tmp folder to writable . run chmod 777 tmp/

    0 讨论(0)
  • 2020-12-25 14:11

    Or,

    export XDG_RUNTIME_DIR=/run/user/${id -u}
    

    to change this system variable. id -u returns your UID(user id), which is the dir name where you have access to write/read under /run/user/.

    0 讨论(0)
提交回复
热议问题