Я использую Ruby on Rails 3,0,9, RSpec-rails 2 и FactureGirl. Я пытаюсь изложить модель ассоциации фабрики, но у меня проблемы.
У меня есть файл factories/user.rb
, такой как
FactoryGirl.define do
factory :user, :class => User do
attribute_1
attribute_2
...
association :account, :factory => :users_account, :method => :build, :email => 'foo@bar.com'
end
end
, и файл factories/users/account.rb
, такой как:
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
end
end
Вышеприведенный пример работает так, как ожидалось в файлах спецификаций, но , если на заводе :users_account
Оператор Я добавляю код association: user
, чтобы
FactoryGirl.define do
factory :users_account, :class => Users::Account do
sequence(:email) {|n| "foo#{n}@bar.com" }
...
association :user
end
end
я получил следующую ошибку:
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
Как решить эту проблему, чтобы получить доступ к связанным моделям с обеих сторон\фабрик (то есть в файлах спецификаций я хотел бы использовать методы модели ассоциации RoR, такие как user.account
и account.user
) ?
P.S.: Я прочитал вопрос Factory Girl and has_one, и мой случай очень близок к случаю, объясненному в связанном вопросе. То есть, у меня тоже есть _ одна
связь (между классами User
и Users:: Account
).
-121--1166111-
У меня есть приемник boot_completed, который получает уведомление при загрузке.
Но, похоже, он вызывается несколько раз. Я запускаю таймер, а затем сервис, который приводит к нескольким таймерам, а затем сервис сбрасывается и запускается снова.
Создание таймера, подобного этому. Это не повторяющийся таймер, не так ли:
private void setAlarm(Context context, long interval) {
try {
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(RespondAlarmReceiver.ACTION_RESPOND_SMS);
intent.putExtra("isChecking", true);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
long triggerAtTime = SystemClock.elapsedRealtime() + interval; //interval is 60,000
alarms.set(alarmType, triggerAtTime, alarmIntent);
}
catch (Exception e) {
Log.e(DEBUG_TAG, "Unable to set alarm");
}
Если кто-нибудь знает, как подключить отладчик Eclipse к широковещательному приемнику Boot-up или к работающей службе, это было бы фантастически.