لماذا mysqldump تحتاج إلى pathed تماما عندما دعا من وحدة تحكم أو نموذج؟
-
05-07-2019 - |
سؤال
عند أدعو mysqldump
من وحدة تحكم أو نموذج I تحتاج إلى كامل مسار ثنائي، عندما أسميها من الخليع ولست بحاجة ل.
إذا كنت لا بالكامل مسار أحصل على ملف بايت صفر ...
وأستطيع أن أؤكد يتم تشغيل كل العمليات التي تستخدم نفس المستخدم.
# 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}"
إذا أسميه مهمة الخليع من العمل أنه فشل أيضا (ملف بايت صفر).
وOS: ماك روبي 1.8.6
وتحرير: أنا استخدم Etc.getpwuid(Process.uid).name
للحصول على العضو من العملية الحالية
المحلول
ويمكنك دائما تعديل متغير بيئة PATH الخاص بك على النحو المطلوب، بطبيعة الحال. شيء من هذا القبيل هو أفضل القيام به في environment.rb أو الخاص بك التكوين بيئة محددة:
add_paths = %w[ /usr/local/mysql/bin /opt/local/bin ]
ENV['PATH'] = (ENV['PATH'].split(/:/) + add_paths).uniq.select do |p|
File.exist?(File.expand_path(p))
end.join(':')
وبهذه الطريقة يمكنك إضافة عناصر التعسفية إلى المسار إذا كانت موجودة على النظام الخاص بك.
نصائح أخرى
ولقد وجدت في الآونة الأخيرة من الركاب (mod_rails) لا يعمل في قذيفة مثل هجين، والذي هو واضح عندما كنت تفكر في ذلك. وبالتالي فإنه لا <م> لا م> 'وراثة' كامل نظام $ PATH.