我正在尝试获取传递给ruby解释器的脚本的引用.例如,如果我正在运行,ruby foo.rb我想获得对该foo.rb文件的引用.
我认为在Python中可以通过它访问sys.argv[0].可以调用,__FILE__但这不是我正在寻找的解决方案,因为__FILE__产生了当前执行代码所在的文件.
有没有办法做到这一点?
我想计算自定义谓词为真的次数.例如,我有以下代码:
is_man(john).
is_man(alex).
?:-is_man(X).
Run Code Online (Sandbox Code Playgroud)
X将返回john,然后如果我按分号,它也将返回alex,然后返回false.
我想建立像:
count(is_man(X), Count).
Run Code Online (Sandbox Code Playgroud)
而这回归
Count = 2
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在为服务器上的Rails 3.1.1应用程序寻找一个很好的部署教程.好的,我实际上意味着完整.我发布这个问题的原因是虽然网上有很多教程(谷歌,博客,书籍,其他堆栈溢出问题等等),所有这些教程似乎都集中在部署过程中的问题上或者对部署环境做出一些与我需要的不一致的假设.
我意识到在服务器上部署Rails应用程序需要各种不同的程序和工具,这些程序和工具需要配置,不知怎的,我总是被困在显然是"小"的东西上,让我非常沮丧.
所以,让我们从一开始就开始吧.我现在拥有的服务器是可以通过SSH和域名访问的,我们称之为www.example.com.服务器运行一个新的Ubuntu 10.04 x64并且只安装了一个用户,即root(通过root我通过SSH访问服务器).注意!没有Apache,Ruby,PHP,MySQL,cPanel或任何其他面板安装,只是全新安装带来的最低限度.
此外,Web服务器将托管单个应用程序,数据库将在同一台计算机上运行.
据我所知,部署Rails应用程序的过程遵循以下方案:
我已经通过使用多用户安装过程使用RVM来做到这一点(仅仅因为我只有root用户而且它自动完成).这似乎工作得很好但我确实有一些问题:
是否更有意义安装Ruby而不是通过RVM(我想的可能就效率而言)也是RVM在以我不理解的方式修改某些bash_profile文件的方式背后做了一些魔术似乎有侵略性......)?
通过RVM作为单独的用户安装是否更有意义(是否会出现安全问题)?
既然已经安装了Ruby,那么最好安装的宝石是什么?
我只安装了bundler,所以一旦我在服务器上传我的应用程序,我就可以运行一个bundle install命令,它将依次安装所需的app gems.
问题 - 我应该预先安装rails gem吗?还有其他需要安装的宝石吗?
这对我来说很棘手.我正在尝试使用apache和mod-passenger进行部署(它们似乎是最受欢迎的).所以我安装了apache web服务器和乘客gem以及所有相关的依赖项(乘客提到的库).
现在,问题出现了.首先是用户相关.Apache如何运行?我的意思是每个用户?如果我安装它并使用root用户(重新)启动它,它将永久在root用户下运行吗?这是坏事吗?如果是,我应该创建另一个用户吗?如果有,怎么样?在我应该将新用户放入哪些组中,他应该拥有什么权利(即他应该访问哪些文件夹).在这种情况下如何启动apache(在root下,在该用户下,在配置文件中的某处添加一行等)
在哪里放置网站配置的东西?可以将它放入apache.conf,还是应该在站点中创建一个新文件?或者我应该只重用那里已经存在的默认文件?如果在上一步创建了新用户,那么他应该对配置文件有哪些权利?
另外......哪里最终放置rails应用程序?在哪个文件夹中最好?家里的某个地方?也许在/ var/www下?我想知道这会如何影响为应用程序提供服务的apache进程的权限?(通常我在服务应用程序时遇到问题,它抱怨它没有特定文件夹的权限.另外,使用新的资产管道 - 我不完全理解 - 资产文件正在创建,它们似乎不是继承父文件夹权限...)
作为数据库,我正在使用MySQL并安装它非常简单.我在这里的问题再次与用户有关.我应该为数据库使用特殊用户吗?MySQL如何实际管理用户(他们是内部的,还是Linux用户或......?).数据库用户应该与上面的"Web用户"相同吗?或者它应该是不同的?
在这里,我真的迷路了.我真的遇到麻烦使资产管道工作.我已经检查了railscasts剧集以及rails网站教程,我似乎从理论上理解了这一点,但我在实践中遇到了问题.
所以这里的问题是 - 我应该运行什么命令来预编译资产?(尝试运行rake资产:预编译).好吗?我应该在production.rb文件中更改什么?生成的资产如何与上面创建的webuser或数据库用户相关联?我个人在这个步骤中遇到问题,即日志文件说某些css文件无法访问(例如我在vendor/assets文件夹下安装了jqplot库并且无法访问其文件 - 我应该在这里添加一个清单文件?).
如果有人可以指向一篇很好的文章或解释所有这些内容的资源,那将是非常好的.我遇到问题的主要领域是Apache,Passenger,Ruby,Rails和MySQL如何与Linux用户交互.如何正确设置Rails应用程序文件夹的权限?资产管道如何影响此用户权限?
谢谢
我正在使用Rspec测试我的控制器,在向路径发出请求之前,我似乎无法设置当前控制器的会话变量.例如,这有效:
describe "GET /controller/path" do
it "if not matching CRSF should display message" do
get controller_path
request.session[:state] = "12334"
end
end
Run Code Online (Sandbox Code Playgroud)
这不起作用(我得到一个错误,说session不是Nil类的方法):
describe "GET /controller/path" do
it "if not matching CRSF should display message" do
request.session[:state] = "12334"
get controller_path
end
end
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
嘿,我想了解下面的代码片段.
public static void main(String[] args) {
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
}
Run Code Online (Sandbox Code Playgroud)
此方法运行所有println指令.那是i1!= i2是真的,但是i3 == i4.乍一看这让我觉得奇怪,它们应该是不同的参考.我可以弄清楚,如果我将相同的字节值(-128到127)传递给i3和i4,它们将始终等于引用,但任何其他值将使它们不同.
我无法解释这一点,您能指出一些文档或提供一些有用的见解吗?
谢谢
在普通的excel中,可以使用工作表左上角的小文本框命名单元格(或范围),例如,可以将单元格从H13命名为"total".
有没有办法通过Apache POI做到这一点?
我知道在Java中的垃圾收集期间,没有任何对它们的引用的对象被标记为"死",以便它们可以被垃圾收集器从内存中删除.
我的问题是,在垃圾收集阶段,是否所有"死"对象都从内存中删除或者其中一些存活?为什么"死"对象会在垃圾收集阶段存活下来?
稍后编辑
谢谢你的所有答案.我可以推断出"死"对象不会被删除的主要原因是由于垃圾收集器运行方式的时间或间隔限制.但是,假设垃圾收集器可以到达所有"死"对象,我想知道是否有一种方法可以声明,引用,使用,取消引用等等.一个对象,以便它会以某种方式跳过删除阶段,即使它"死了".我想也许属于具有静态方法或内部类的类的对象或类似的东西可能由于某种原因保存在内存中,即使它们没有引用它们.
这种情况可能吗?
谢谢
java ×3
apache ×1
apache-poi ×1
deployment ×1
excel ×1
integer ×1
memory ×1
memory-leaks ×1
passenger ×1
prolog ×1
rspec ×1
rspec2 ×1
ruby ×1
testing ×1