【问题标题】:Why I can't execute command in Ruby?为什么我不能在 Ruby 中执行命令?
【发布时间】:2014-05-15 04:39:43
【问题描述】:

我有一个html页面,我想实现插件的在线工作。目前,用户必须执行 4 个步骤才能获取报告。我想创建一个可以在线执行这些步骤的按钮。在这一步 - 在 TaskJuggler 中计算。我在电脑上安装了程序。而对于计算,我需要执行命令:tj3 'file name'。

Redmine 插件,我使用 Ruby on Rails。

我使用的代码

<h2><%= l(:redmine_taskjuggler)%></h2>
<%= l(:project)%> : <%= @project %> - <%= @project.identifier %>
<p>
<%= submit_tag "Compute in TJ", :type => 'button', :onclick => "javascript:tj3_com()" %>
</p>

<textarea id='placeForText' cols='70' rows='7' disabled></textarea>

<script type="text/javascript">
function tj3_com(){

<% name = "#{@project.identifier.gsub(/-/,'_')}" + '-' + "#{@project.tj_version.to_s.gsub(/\./,'_')}" + '-' +'20140331_145001' + '.tjp' %>
<% outp = `tj3 /home/kitsune/proj/pred-0_0_1-20140331_145001.tjp` %>
document.getElementById('placeForText').innerHTML=document.getElementById('some_doing').innerHTML

}
</script>

<script type="text/template" id="some_doing">
<%= outp %>
</script>

而且它不起作用。但是如果我使用

<% outp = `ls -l /home/kitsune/` %>

一切正常。

但是如果我想使用

<% `ls -l /home/kitsune/ > check.txt` %>

它不工作,文件“check.txt”没有创建。但是如果我在 irb 中使用所有这些命令(tj3,ls -l),它就可以工作了。

我不知道如何解决这个问题。谁能帮帮我?!

【问题讨论】:

  • 你尝试过使用系统方法吗?
  • 是的。它返回“假”。
  • 如果我尝试使用 system('tj3 /home/kitsune/proj/pred-0_0_1-20140331_145001.tjp > check.txt') 文件未创建
  • ls -l /home/kitsune/ &gt; check.txt 2&gt; error.txt 看看写 check.txt 时的实际错误是什么
  • error.txt 未创建。而这个问题就解决了。但是 tj3 的问题没有解决。

标签: javascript html ruby-on-rails ruby command


【解决方案1】:

试试这个:

<% `ls -l /home/kitsune/ > public/check.txt` %>

【讨论】:

  • 是的,它有效。但我仍然需要使用tj3 /home/kitsune/proj/pred-0_0_1-20140331_145001.tjp
  • 在你的命令行输入“which tj3”,它会返回tj3的路径。用它的整个路径替换 tj3。
  • 使用 "which tj3" 我获得 /usr/local/bin/tj3 我使用 /usr/local/bin/tj3 /home/kitsune/proj/pred-0_0_1-20140331_145001.tjp %>。什么都没有
猜你喜欢
  • 2016-06-28
  • 1970-01-01
  • 2022-01-17
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多