【发布时间】:2009-11-26 13:41:05
【问题描述】:
当我从控制器或模型调用 mysqldump 时,我需要完全路径二进制文件,当我从 Rake 调用它时,我不需要。
如果我没有完整路径,我会得到一个零字节文件...
我可以确认这两个进程是使用同一个用户运行的。
# Works in a controller, model and Rake task
system "/usr/local/mysql/bin/mysqldump -u root #{w.database_name} > #{target_file}"
# Only works in a Rake task
system "mysqldump -u root #{w.database_name} > #{target_file}"
如果我从操作中调用 Rake 任务,它也会失败(零字节文件)。
操作系统:Mac 红宝石 1.8.6
编辑:我使用Etc.getpwuid(Process.uid).name 获取当前进程的用户
【问题讨论】:
-
如何运行 Rails 应用程序?我认为您应该检查运行它的进程是否与运行 Rake 时具有相同的环境(以及 PATH 变量)。
-
进程在同一个用户下运行,我不太确定在这两种情况下 PATH 设置为什么。
-
在 Rails ENV['PATH'] 中是 /usr/bin:/bin:/usr/sbin:/sbin 在 Rake ENV['PATH'] 中它与我的系统 $PATH 完全相同.这正常吗?
标签: ruby-on-rails ruby rake mysqldump