2016-07-19 1 views
0

Я прочитал несколько похожих тем, где предлагается проверить/изменить разрешения. И я уже сделал это, но это не сработало.Rails Byebug разрешение Errno :: Ошибка EACCES при использовании скрипта для запуска сервера

Вот мои разрешения папки проекта:

$ stat trains 
File: ‘trains’ 
Size: 4096   Blocks: 8   IO Block: 4096 directory 
Device: 816h/2070d Inode: 265254  Links: 14 
Access: (0777/drwxrwxrwx) Uid: (1000/ xxx) Gid: (1000/ xxx) 
Access: 2016-07-19 08:24:43.633340992 +0300 
Modify: 2016-07-19 08:20:59.785332645 +0300 
Change: 2016-07-19 08:24:43.533340989 +0300 
Birth: - 

Последние строки из моего терминала журнала:

Errno::EACCES - Permission denied @ rb_sysopen - /.byebug_history: 
    byebug (9.0.5) lib/byebug/history.rb:39:in `save' 
    byebug (9.0.5) lib/byebug/interface.rb:110:in `autosave' 
    byebug (9.0.5) lib/byebug/processors/command_processor.rb:121:in `after_repl' 
    byebug (9.0.5) lib/byebug/processors/command_processor.rb:100:in `process_commands' 
    byebug (9.0.5) lib/byebug/processors/command_processor.rb:56:in `at_line' 
    byebug (9.0.5) lib/byebug/context.rb:96:in `at_line' 
    app/controllers/stations_controller.rb:13:in `new' 

Я пытался создать /.byebug_history файл сам с 777 разрешений, но это не помогло.

Я проверил, что ошибка происходит из .rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/byebug-9.0.5/lib/byebug/history.rb

из этой части (если я комментирую его ошибка исчезает)

open(Setting[:histfile], 'w') do |file| 
    n_cmds.times { file.puts(pop) } 
    end 

Я уже проверил другие мои проекты и создал новый с нуля и все из них бросают ту же ошибку, если я пытаюсь использовать byebug.

UPDATE

Только что узнал, что у него есть что-то делать с моей rails_server_helper скрипт, который я использую для запуска сервера.

Вот сценарий

function r() { 
    if [ "$1" = "st" ]; then 
    if [ "$2" = "" ]; then 
     RENV="development" 
    else 
     RENV="$2" 
    fi 
    r sp 
    rails server -d -e "$RENV" 
    tail -f log/development.log 
    return 0 
    elif [ "$1" = "sp" ]; then 
    if [ -f tmp/pids/server.pid ]; then 
     kill $2 $(cat tmp/pids/server.pid) 
     return 0 
    else 
     echo "It seems there is no server running or you are not in a rails project root directory" 
     return 1 
    fi 
    elif [ "$1" = "rt" ]; then 
    r sp && r st $2 
    else 
# command rails [email protected] 
    echo "I don't know this command, dude..." 
    fi; 
} 

И инициализируется в .bashrc так:

if [ -f ~/@stuff/rails_server_helper.bash ]; then 
    . ~/@stuff/rails_server_helper.bash 
fi 

Так что, если я не использую его и начать рельсы сервер обычно с rails server командой то разрешения Byebug ошибка исчезает, и я вижу консоль отладки Byebug, где она должна быть. Но я не понимаю, почему.

ответ

1

Хорошо, нашел ответ. Причина заключается в том, что этот скрипт запускает сервер Рельсы как демон:

rails server -d 

Для какой-то причине отладки не работает в этом случае.