Правовая оговорка: я на самом деле никогда не делал этого на месте производства, но похоже, что разумный путь состоял бы в том, чтобы использовать фиктивные объекты, should_receive
и друзья, и вызвать методы на наблюдателя непосредственно
, Учитывая следующую модель и наблюдателя:
class Person < ActiveRecord::Base
def set_status( new_status )
# do whatever
end
end
class PersonObserver < ActiveRecord::Observer
def after_save(person)
person.set_status("aha!")
end
end
я записал бы спецификацию как это (я выполнил ее, и она передает)
describe PersonObserver do
before :each do
@person = stub_model(Person)
@observer = PersonObserver.instance
end
it "should invoke after_save on the observed object" do
@person.should_receive(:set_status).with("aha!")
@observer.after_save(@person)
end
end
У нас были проблемы с удалением файлов и каталогов в Windows, даже если мы только что скопировали их, если для них установлено значение «только чтение». shutil.rmtree ()
предлагает вам своего рода обработчики исключений для обработки этой ситуации. Вы вызываете его и предоставляете обработчик исключений следующим образом:
import errno, os, stat, shutil
def handleRemoveReadonly(func, path, exc):
excvalue = exc[1]
if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
os.chmod(path, stat.S_IRWXU| stat.S_IRWXG| stat.S_IRWXO) # 0777
func(path)
else:
raise
shutil.rmtree(filename, ignore_errors=False, onerror=handleRemoveReadonly)
Вы можете попробовать это.
Я никогда не использовал Python, но предполагаю, что он работает как любой пользователь, выполняющий сценарий.
Как вы запускаете сценарий? Из сеанса интерактивной консоли? Если это так, просто откройте командное окно DOS (используя cmd) и введите «whoami». Это тот, кто запускает сценарии в интерактивном режиме.
Хорошо, я только что видел ваши правки ... почему бы вам не распечатать путь и не проверить свойства, чтобы увидеть, имеет ли учетная запись пользователя, запускающая сценарии, необходимые привилегии?
Если whoami не работает в вашей версии Windows, вы можете использовать переменные среды, такие как SET USERNAME и SET DOMAINNAME из вашего командного окна.
Если сценарий запускается как запланированная задача (что кажется вероятным для сценария очистки), он, вероятно, будет работать как SYSTEM. (Неразумно, но) можно установить разрешения для каталогов так, чтобы у SYSTEM не было доступа.
У скриптов нет специального пользователя, они просто запускаются под текущим авторизованным пользователем, который выполнил скрипт.
Вы пытались проверить, что: