小编jgx*_*xvx的帖子

deploy.rb:未定义的局部变量或方法`home` for main:Object

我知道有很多关于此错误消息的问题,但我找不到与我的相同背景中发生此错误的问题.

我正在尝试将先前工作的Capistrano配置从版本2迁移到Capistrano 3.不幸的是,调用会cap production deploy --dry-run生成错误

cap aborted!
undefined local variable or method `home' for main:Object
/myapp/config/deploy.rb:6:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

这是deploy.rb发生错误的第6行的内容:

set :user, "myuser"
set :application, "myapp"
set :domain, "mydomain"
set :repository, "git@github.com:acme/myapp.git"
set :home, "/home/myuser"
set :deploy_to, "#{home}/#{domain}"
Run Code Online (Sandbox Code Playgroud)

我对Ruby知之甚少,但从我收集的内容来看,冒号意味着这些是符号,而不是变量,而在Capistrano文档中,它们使用相同的语法来定义"变量"(参见第5节"集合") deploy.rb中的共享信息")?

部署脚本在OS X上使用Ruby 2.0.0p247和Capistrano 2.9.0完美运行.现在在使用Ruby 1.9.3p545和Capistrano 3.1.0的CentOS上,出现上述错误.我对CapfileCapistrano 3 进行了几次更改,但保持deploy.rb不变,希望它能正常工作.

ruby capistrano3

3
推荐指数
1
解决办法
6216
查看次数

Zend_Navigation:仅获取当前用户/角色可访问的页面

我有一个Zend_Navigation运行与navigation.xml文件提供的数据.我们假设第一级(0)由两个页面组成,前端和后端.guest用户可以通过admin角色访问前端,Backend只能访问前端.

如果我做了

<?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
Run Code Online (Sandbox Code Playgroud)

它在未登录时正确显示"前端"链接,以管理员身份登录时显示"前端"和"后端"链接.

但是,显示"前端"链接对于访客来说没有多大意义,因为他们无论如何都没有任何其他页面可以导航到该级别.所以我宁愿不为客人显示导航.

我知道我能做到

<?php
if ('guest' !== $this->view->role) {
    echo $this->navigation()->menu();
}
?>
Run Code Online (Sandbox Code Playgroud)

但我希望有更好的方法来做到这一点.

我正在寻找的是类似的东西

<?php
if (count($this->navigation()->getPagesForRole($this->view->role)) > 1) {
    echo $this->navigation()->menu();
}
?>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何使用Zend_Navigation提供的API实现这一点...我看到有一个getPages()方法,但它返回所有页面"未过滤".

我认为这有一个简单的解决方案,但我一直试图在过去的两个小时内解决这个问题并且什么都没找到,所以我猜我的方向错了.

谢谢你的时间.

编辑:

我忘了提到导航已经使用ACL来控制权限,它工作正常.我唯一的问题是我不想为客人显示前端/后端导航,因为只导航一个链接项是没用的.对此感到抱歉.

php acl zend-framework zend-navigation

2
推荐指数
1
解决办法
1926
查看次数

标签 统计

acl ×1

capistrano3 ×1

php ×1

ruby ×1

zend-framework ×1

zend-navigation ×1