2014-12-26 3 views
1

я после урока Padrino отсюда:Padrino Учебник: Невозможно изменить Замороженную строку (Runtime Error)

https://www.padrinorb.com/guides/blog-tutorial

Я скопировать и вставить команды, но я быстро побежал в ошибку я дон «т понять:

$ padrino g controller posts get:index get:show 
    create app/controllers/posts.rb 
    create app/views/posts 
    apply tests/shoulda 
/Users/waprin/.rvm/gems/ruby-2.1.0/gems/padrino-gen-0.12.4/lib/padrino-gen/generators/controller.rb:66:in `prepend': can't modify frozen String (RuntimeError) 
from /Users/waprin/.rvm/gems/ruby-2.1.0/gems/padrino-gen-0.12.4/lib/padrino-gen/generators/controller.rb:66:in `create_controller' 

ответ

2

Это может быть немного поздно, но в случае, если кто-то проходит через эту ошибку (и потому что я просто работал через тот же учебник) я выложу все равно ...

Похоже, что возникает проблема при создании контроллеров, если указан тестовый компонент. В этом случае вы используете shoulda, но то же самое происходит при использовании rspec и, возможно, других. Сообщается, что это ошибка: https://github.com/padrino/padrino-framework/issues/1850 и исправлена, но пока не является частью стабильного выпуска.

Одним из вариантов исправить это было бы изменение вашего Gemfile для работы с последними из их репозитория github. Для этого удалите файл GemFile.lock, и закомментируйте строку под заголовком 'Padrino Stable Gem' в вашем Gemfile:

gem 'padrino', '0.12.4' 

затем раскомментируйте строки под 'Или Padrino Краю':

gem 'padrino', :github => 'padrino/padrino-framework' 

затем повторно запустите установку пакета.

Конечно, вы больше не будете запускать стабильный выпуск, и это может привести к другим компромиссам.

В качестве примечания, я считаю, что руководство на этой странице довольно устарело. Я также необходимо заменить:

get :index do 
    @posts = Post.all(:order => 'created_at desc') 
    render 'posts/index' 
    end 

с:

get :index, :provides => [:html, :rss, :atom] do 
    @posts = Post.order('created_at desc') 
    render 'posts/index' 
    end 

в контроллере сообщения в качестве активного звукозаписывающего интерфейса изменился с того времени, что руководство было написано.

+0

я в конце концов пришел к тем же выводам, но забыл опубликовать мой ответ, спасибо за помощь! –

0

Я был в состоянии решить эту проблему, просто перейдя в padrino gem path.

Для меня это было:

/Users/ahmadhassan/.rvm/gems/ruby-2.2.0/gems/padrino-gen-0.12.4/lib/padrino-gen/generators 

открытым controller.rb и изменение линии номер 61:

path = @controller 

в

path = @controller.dup 
Смежные вопросы