Передайте пользовательские параметры в приложение dart при использовании pub serve для его запуска.

Можно ли передать какой-либо аргумент приложению dart при его запуске с помощью pub serve? То, что я пытаюсь сделать, это заставить приложение использовать некоторые издевательские службы, пока я его разрабатываю, но затем, когда оно будет развернуто, я хотел бы заменить издевательские службы реальными. Например:

const bool DEBUG = true;

class AppModule extends Module {
  AppModule() {
    type(PaymentService, implementedBy: DEBUG ? PaypalPaymentService : MockPaymentService );
  }
}

Я бы хотел, чтобы этот параметр DEBUG каким-то образом формировался из среды и чтобы его можно было легко настроить при запуске приложения с помощью pub serve. Каков наилучший способ добиться этого?


person markovuksanovic    schedule 18.01.2014    source источник


Ответы (1)


Вы можете проверить URL. Если host является 127.0.0.1 вашим в среде разработки, иначе это prod.

Другая идея состоит в том, чтобы использовать преобразователь, который что-то вводит, когда mode равно debug. Не уверен, что это действительно возможно таким образом.

$ pub help serve
Run a local web development server.

Usage: pub serve
-h, --help               Print usage information for this command.
    --port               The port to listen on.
                         (defaults to "8080")

    --[no-]dart2js       Compile Dart to JavaScript.
                         (defaults to on)

    --[no-]force-poll    Force the use of a polling filesystem watcher.
    --mode               Mode to run transformers in.
                         (defaults to "debug")
person Günter Zöchbauer    schedule 18.01.2014
comment
URL-адрес не будет работать, так как я мог бы запустить приложение в режиме, в котором используются реальные службы даже на локальном хосте. Трансформеры могут работать, но я не могу найти пример того, как их написать. Любые указатели? В документации по пабу не показано, как его написать, только как его использовать. - person markovuksanovic; 19.01.2014
comment
Недавно обсуждалось, что должна быть написана документация по сборке трансформатора, но я ее еще не видел. (groups.google.com/a/dartlang.org /forum/#!topic/misc/d4jrnPzFV2w) - person Günter Zöchbauer; 19.01.2014
comment
Кроме того, когда я запускаю pub serve, как мне указать, является ли это «производственным» режимом или «отладочным»? Я искал что-то вроде pub serve --mode=debug. - person markovuksanovic; 19.01.2014
comment
Я добавил вывод из pub help serve в свой ответ. --mode=debug по умолчанию. - person Günter Zöchbauer; 19.01.2014
comment
О... извините, я не знал, что в пабе уже есть флаг с именем "режим". Я искал передачу пользовательского флага (по совпадению я использовал режим имени, который уже существует). Возможно, лучшим примером будет `pub serve --app_mode=debug'. Я думаю установить метатег в html, а затем прочитать его, чтобы установить режим... Затем я мог бы использовать трансформатор, чтобы фактически изменить значение во время процесса развертывания, если это необходимо.... - person markovuksanovic; 19.01.2014
comment
Я нахожу существующий параметр mode удобным, так как по умолчанию он равен debug для pub serve и release для pub build, поэтому вам не нужно беспокоиться об установке значения. Но, конечно, в вашем случае другие варианты могут подойти лучше. - person Günter Zöchbauer; 19.01.2014