如何在heroku上运行命令行命令

时间:2015-01-27 17:39:16

标签: ruby-on-rails heroku command-line

这是我在下面的Rails 4应用程序中的rake任务。

 task :traceroute_ip => :environment do
     puts "start.........................."

     ip = IpAddress.first
     ip_address_output =  `traceroute -q 1 -n google.com`
     ip.update_attributes(traceroute_output: ip_address_output)      

  end

我在Rails app rake任务中本地正常工作的这一行有错误。

        ip_address_output =  `traceroute -q 1 -n google.com`

错误是

 /app/vendor/bundle/ruby/2.0.0/bin/rake: No such file or directory - traceroute

以下命令将在任何ubuntu终端上运行

         traceroute -q 1 -n google.com

我如何安装" traceroute"在heroku上?

  sudo apt-get install traceroute 

由于

1 个答案:

答案 0 :(得分:5)

您可以使用heroku-buildpack-multiheroku-buildpack-apt与您的ruby buildpack结合使用。

创建.buildpacks文件:

$ cat .buildpacks
https://github.com/ddollar/heroku-buildpack-apt
https://github.com/heroku/heroku-buildpack-ruby

包含您的软件包的Aptfile文件:

$ cat Aptfile
traceroute

然后你需要将 heroku-buildpack-multi 设置为自定义构建包:

$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git

更新:尝试运行traceroute.db而不是traceroute

$ heroku run traceroute.db -q 1 -n google.com
Running `traceroute.db -q 1 -n google.com` attached to terminal... up, run.6887
traceroute to google.com (74.125.228.68), 30 hops max, 60 byte packets
 1  172.16.231.221  0.116 ms
 2  10.135.67.1  2.812 ms
 3  100.70.9.1  2.154 ms
 4  100.70.9.40  2.344 ms
 ...