我从这里学习帕德里诺教程:
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'
晚了,但如果其他人遇到此错误(并且因为我刚刚完成了相同的教程),我还是会发布......
如果指定了测试组件,则生成控制器时似乎存在问题。在这种情况下,您使用的是 should've,但在使用 rspec 和其他时也会发生同样的情况。它被报告为一个错误:https://github.com/padrino/padrino-framework/issues/1850 并已修复,但尚未成为稳定版本的一部分。
解决此问题的一种选择是更改您的 Gemfile 以使用其 github 存储库中的最新版本。为此,请删除您的 GemFile.lock 文件,并注释掉 GemFile 中"Padrino Stable Gem"下的行:
gem 'padrino', '0.12.4'
然后取消注释"或帕德里诺边缘"下的行:
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
在 Post 控制器中,因为自编写指南以来,活动记录界面已更改。
我可以通过简单地去帕德里诺宝石路径来解决这个问题。
对我来说是:
/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