我开始使用mruby,并发现很难在我的代码中发生错误,但是没有错误报告。也许我做错了。发生错误时如何显示错误?
C代码摘录:
mrb = mrb_open();
FILE *f = fopen("example.rb", "r");
mrb_load_file(mrb, f);
fclose(f);
// more C code...
Run Code Online (Sandbox Code Playgroud)
Ruby代码失败,没有报告:
# example.rb
def my_method
call_undefined_method
end
my_method()
Run Code Online (Sandbox Code Playgroud)
从错误中解救出来以显示存在错误的Ruby代码:
# example.rb
def my_method
call_undefined_method
rescue => e
puts "Error: #{e.message}"
end
my_method()
Run Code Online (Sandbox Code Playgroud) 我想在我的Windows Vista机器上安装Ruby1.9.2/Rails3.0.3,并将PostgreSQL 9.0作为我的数据库.
我在网上看到了许多不同的指示,说明哪些有效,哪些无效.
谁能告诉我必须安装哪些gem才能让Ruby1.9.2/Rails 3.0.3在Windows Vista上驱动PostgreSQL 9.0?
我感谢你能给我的任何帮助.
我已经在Ubuntu 11.04上将我的Rails 3.0.10/MRI应用程序移植到Ubuntu 11.04上的JRuby 1.6.4.我的目标是到达一个我必须执行以下操作才能在JRuby下运行应用程序的地方.
railsapp1> rbenv local jruby-1.6.4
railsapp1> rails server
Run Code Online (Sandbox Code Playgroud)
并让应用程序在MRI下工作,
railsapp1> rbenv local 1.9.2-p290
railsapp1> rails server
Run Code Online (Sandbox Code Playgroud)
这个问题的第一部分是解决宝石问题.为了使这个过程在没有代码更改的情况下工作,我在Rails Gemfile中执行了以下操作
platforms :mri do
gem 'mysql2', '~>0.2.11'
end
platforms :jruby do
gem 'jruby-openssl'
gem 'activerecord-jdbcmysql-adapter'
end
Run Code Online (Sandbox Code Playgroud)
这些gem语句是通过使用不同的MRI/JRuby和SQLite/MySQL组合创建虚拟轨道应用程序,然后从生成的Gemfiles中为每个组合获取gem语句而使用暴力方法获得的.
尽管如此,这并不是很好.我的config/database.yml文件如下所示:
development:
adapter: mysql2
database: doodad
username: doodad
password: doodad
host: localhost
Run Code Online (Sandbox Code Playgroud)
此config/database.yml文件仅适用于MRI版本.对于JRuby版本,config/database.yml文件如下所示:
development:
adapter: mysql
database: doodad
username: doodad
password: doodad
host: localhost
Run Code Online (Sandbox Code Playgroud)
即文件之间的唯一区别是数据库适配器的名称(mysql vs mysql2).有没有办法告诉database.yml文件或系统初始化程序根据Ruby环境是MRI还是JRuby选择适配器?
我在Azure中有一个"Web应用程序",我使用Visual Studio部署/发布.Net Web应用程序.(构建 - >发布),它的工作原理.
我希望能够使用Powershell脚本部署/发布我的应用程序.我得到以下脚本来为构建部分工作:
CMD> "c:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe" WebApplication1.sln
Run Code Online (Sandbox Code Playgroud)
为了使它也部署,我需要添加一些参数:
CMD> "c:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe" WebApplication1.sln /p:DeployOnBuild=true /p:PublishProfile="C:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1\Properties\PublishProfiles\jg-7-web-app-1 - Web Deploy.pubxml" /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Build FAILED.
"c:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1.sln" (default target) (1) ->
"c:\Users\jgodse\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1\WebApplication1.csproj" (default target) (2) ->
(MSDeployPublish target) ->
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4295,5): msdeploy error ERROR_USER_UNAUTHORIZED: Web deployment task failed. (Connected to the remote computer ("jg-7-web-app-1.scm.azurewebsites.net") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name …Run Code Online (Sandbox Code Playgroud) 我在Azure区域(加拿大中央)的Azure映像中有一个(系统准备/通用的)服务器模板。我想使用它在其他Azure区域(美国中部)中创建Azure VM。没用
因此,我需要该Azure Image也驻留在美国中部。如何将Azure映像从一个Azure区域复制到另一个区域?
我有一个网络应用程序,大多数情况下使用MRI Ruby和JRuby.但...
当我使用MRI时,我可以做到这一点.
> rails console
irb(main):001:0> a=Time.new(1,1,1,1,1)
=> 0001-01-01 01:01:00 -0500
Run Code Online (Sandbox Code Playgroud)
即它在指定时间内创建一个新的Time对象.
当我切换到JRuby时,我这样做
> rails console
irb(main):001:0> a=Time.new(1,1,1,1,1)
ArgumentError: wrong number of arguments (5 for 0)
from (irb):2: in `evaluate`
from org/jruby/RubyKernel.java:1088 in `eval`
from /home/user/.rbenv/versions/jruby-1.6.4/lib/ruby/1.8/irb.rb:158 in `eval_input`
from /home/user/.rbenv/versions/jruby-1.6.4/lib/ruby/1.8/
....
Run Code Online (Sandbox Code Playgroud)
如何在JRuby中创建一个Time对象,其中包含我控制的年,月,日,小时和分钟?如果是这样,这可以用于MRI Ruby吗?
我不知道这是否相关,但是
irb(main):002:0> RUBY_VERSION
"1.8.7"
Run Code Online (Sandbox Code Playgroud)
我的问题可能是因为我处于1.8.7模式吗?如果是这样,如何将我的rbenv/jruby-1.6.4安装切换为RUBY_VERSION = 1.9.2?
我已经按照Twilio github页面上的示例代码进行操作,但它不起作用.在我的Rails控制台中,它看起来像这样:
irb(main):039:0> require 'twilio-ruby'
=> nil
irb(main):040:0* account_sid='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
=> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
irb(main):041:0> auth_token='yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
=> "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
irb(main):042:0> client=Twilio::REST::Client.new account_sid, auth_token
=> <Twilio::REST::Client @account_sid=AC1322312300a752f6e84a8254535ecce5>
irb(main):043:0> client.account.sms.messages.create :from=>'16135551234', :to=>'16135551212', :body=>"Ada is fat"
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in `connect'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in `block in connect'
from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:44:in `timeout'
from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:in `timeout'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:678:in `connect'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:637:in `do_start'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:626:in `start'
from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:1168:in `request'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb:51:in `request'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/client.rb:214:in `connect_and_send'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/twilio-ruby-3.4.2/lib/twilio-ruby/rest/client.rb:138:in `block (2 levels) …Run Code Online (Sandbox Code Playgroud) 我有一个混合Web应用程序,它在同一个Tomcat中运行Java WAR文件和JRuby WAR文件.
我们决定使用(JRuby)Resque作为我们的工作队列.对入队作业的调用如下所示:
Resque.enqueue(FooWorker, 111)
Run Code Online (Sandbox Code Playgroud)
其中FooWorker是JRuby端定义并使用的工作类(并包含在JRuby WAR文件中),当JRuby Resque rake任务处理队列中的作业时,它将被调用.
我想让Java代码能够将要由JRuby FooWorker类处理的Resque队列上的任务排队.
我在https://github.com/tc/call-jruby-from-java-example上查看了Tommy Cheng的代码.java文件
//JavaInterfaceExample.java
interface JavaInterfaceExample{
int add(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)
和ruby文件
#JrubyAdderImpl.rb
require 'java'
class JrubyAdderImpl
include Java::JavaInterfaceExample
java_signature 'int add(int, int)'
def add(a, b)
a+b
end
end
Run Code Online (Sandbox Code Playgroud)
我怀疑我的代码看起来像:java文件
//ResqueInterfaceExample.java
interface ResqueInterfaceExample{
int resque_enqueue_foojob(int a);
}
Run Code Online (Sandbox Code Playgroud)
红宝石文件
#JrubyResqueImpl.rb
require 'java'
require 'resque'
class JrubyResqueImpl
include Java::ResqueInterfaceExample
java_signature 'int resque_enqueue_foojob(int)'
def resque_enqueue_foojob(a)
Resque.enqueue(FooWorker, a)
end
end
Run Code Online (Sandbox Code Playgroud)
我的FooWorker是一个类,它位于rails app的爆炸war文件目录中,文件是app/workers/foo_worker.rb
我需要做些什么来确保jruby编译器可以访问FooWorker和Resque JRuby类来正确编译代码?
我有一个for的web布局看起来像这样
<html>
<head>
</head>
<body>
<div id="posts">
<div id="post1" class="post" >
<!--stuff 1-->
</div>
<div id="post2" class="post" >
<!--stuff 1-->
</div>
<!-- 96 more posts -->
<div id="post99" class="post" >
<!--stuff 1-->
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望能够加载并呈现一个空白的页面,然后在页面加载时调用一个函数进入并加载帖子并动态更新页面.
在Rails中,我尝试使用"link_to_remote"来更新所有元素.如果它是ajax请求(request.xhr?),我还调整了posts控制器以呈现帖子集合.它运行良好,速度非常快.但是,单击链接会触发空白div的更新.我希望在加载页面时发生相同的操作,这样我就不必输入链接.
是否有一个Rails Ajax助手或RJS函数或Rails中的东西,我可以用来在页面加载和渲染(没有帖子)后触发加载"帖子"?
(如果推出了putsch,我将只从link_to_remote调用中复制生成的JS代码,并从主体上的onload处理程序调用它).
ruby ×3
azure ×2
jruby ×2
ruby-1.9.2 ×2
ajax ×1
credentials ×1
jrubyonrails ×1
mruby ×1
msbuild ×1
mysql ×1
onload ×1
postgresql ×1
powershell ×1
resque ×1
twilio ×1