我正在考虑使用JRuby(或适用于Android的Ruby的适当变体)在Android上创建应用程序.
根据我的研究,目前有两个项目支持Android上的Ruby开发:
从gotoub 上的Ruboto wiki的常见问题解答看来,Ruboto已准备好进行应用程序开发,但还不支持JIT编译,并且应用程序必须与库一起打包,这使得它占用大量空间(用于移动设备安装).
我对SL4A知之甚少,但似乎SL4A也试图在JVM上运行JRuby脚本.但主要的是SL4A仍处于alpha状态,所以我不知道它是否可以用于app开发.
对这些平台有更好了解的人可以建议应该使用哪一个?此外,在不久的将来,哪一个更有可能在JIT(性能),更低的占用空间和更好的API访问Android方面变得更加成熟?
我一直在环顾四周,似乎无法找到任何看似"最新"的明确答案或进展.我见过一些有趣的项目,比如Mirah(以前的Duby),我正在调查一下.我见过JRuby用于将ruby编译成.dex失败了.我也一直在寻找Clojure,并意识到他们可能都与同一件事有关.
有没有人有关于如何开始并取得进展的任何提示?我不仅要问哪些框架可以提供帮助,更重要的是,我还要提出一个指导我的努力的理念/方向,以便开始.
如何设置gem以获得二进制命令,例如"project newProject"使用Thor的一组生成器命令来创建文件等?
一个好的答案将描述如何布置gem的骨架,当从命令行运行时,即"project newProject",在它运行的目录中创建一个名为"newProject.txt"的文件.
我已经看到Rails 3使用Thor为其发电机供电; 似乎是一个非常好的解决方案,我想在我正在研究的非Rails ruby gem中使用类似的方法.尝试看Rails 3来源,但它有点迷宫,因此问题.
这是一个关于模拟module Email. 该方法称为connect_and_send:
require 'minitest/autorun'
module Email
def self.connect_and_send(*args)
nil
end
end
class Test < Minitest::Test
def test_it
fake = Minitest::Mock.new
fake.expect :connect_and_send, nil, ['a', 'b', 'c']
Email.stub :connect_and_send, fake do
Email.connect_and_send 'a', 'b', 'z'
end
fake.verify
end
end
Run Code Online (Sandbox Code Playgroud)
该示例旨在验证是否调用了该方法及其参数。
但它产生了connect_and_send预期的错误消息,但没有被调用!
1) Error:
Test#test_it:
MockExpectationError: expected connect_and_send("a", "b", "c") => nil
-:14:in 'test_it'
1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
Run Code Online (Sandbox Code Playgroud)
相反,我认为它会产生一条错误消息,指出方法 ( connect_and_send) 被赋予了不正确的参数。
使用 Minitest,如何使用模拟存根,并验证其参数?