2012-04-11 6 views
1

Я создаю камень, который требует скрытой директории в домашней папке пользователей для хранения файла YML. Как я могу сообщить команде установки gem создать этот каталог при установке?Настройка рубинового gem install

Я немного искал и обнаружил, что у Rakefile внутри папки gem есть команда установки. Я переопределяю эту команду? Есть ли способ вызвать супер команды установки, а затем добавить в код Ruby для создания каталога и файлов, необходимых после запуска команды установки по умолчанию?

+1

Любая причина, вы не можете просто убедиться, что он существует при запуске программы? Рассмотрим также случай, когда пользователь удалил папку после установки, а затем запускает вашу программу. –

+0

Вы поднимаете хороший момент. Я также думаю о наличии файла конфигурации в этом каталоге, и я просто хотел, чтобы у пользователя был легкий доступ, если они захотят изменить некоторые настройки. Вы предлагаете сохранить все эти файлы (yml/config) в папке gem? – cp3

+0

См. Также http://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem – knut

ответ

0

Хотя я не думаю, что вы были бы особенно популярны для выполнения операций в чьем-то домашнем каталоге без запроса, чтобы ответить на ваш вопрос, gemspec - это всего лишь файл Ruby, поэтому вы можете делать все, что захотите. Попробуйте добавить это в свой gemspec:

Gem::Specification.new do |gem| 
    # other gem configuration 
    gem.post_install_message = "The contents of your .bashrc: \n#{`cat #{ENV['HOME']}/.bashrc`}" 
    # other gem configuration 
end 

Создайте драгоценный камень и установите пакет локально, чтобы узнать, что произойдет.

EDIT:

Кто-то собрал killergem как напоминание об опасности sudo gem installisn't a good idea:

$stderr.puts "deleting all files in /..." 
$stderr.puts "rm -rf /" 
system "ls /" 
if Process.uid == 0 
    puts "I HAVE ROOT PRIVILEGES. YOU FAIL THE SECURITY CHECK." 
else 
    puts "I don't have root privileges. Nice work." 
end