Определение версии направляющих для использования при создавании нового приложения

Для Mysql у нас есть ограничение. В драйвере Mysql doc мы имеем:

Ниже приведены некоторые известные проблемы и ограничения для MySQL Connector / J: Когда Connector / J извлекает временные метки для перехода на летнее время (DST), используя метод getTimeStamp () в наборе результатов, некоторые из возвращаемых значений могут быть неправильными. Ошибок можно избежать, используя следующие параметры подключения при подключении к базе данных:

blockquote>
useTimezone=true
useLegacyDatetimeCode=false
serverTimezone=UTC

Итак, когда мы не используем эти параметры, и мы вызываем setTimestamp or getTimestamp с календарем или без календарь, мы имеем временную метку в часовом поясе jvm.

Пример:

Часовой пояс jvm - GMT + 2. В базе данных есть временная метка: 1461100256 = 19/04/16 21: 10: 56,000000000 GMT

Properties props = new Properties();
props.setProperty("user", "root");
props.setProperty("password", "");
props.setProperty("useTimezone", "true");
props.setProperty("useLegacyDatetimeCode", "false");
props.setProperty("serverTimezone", "UTC");
Connection con = DriverManager.getConnection(conString, props);
......
Calendar nowGMT = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Calendar nowGMTPlus4 = Calendar.getInstance(TimeZone.getTimeZone("GMT+4"));
......
rs.getTimestamp("timestampColumn");//Oracle driver convert date to jvm timezone and Mysql convert date to GMT (specified in the parameter)
rs.getTimestamp("timestampColumn", nowGMT);//convert date to GMT 
rs.getTimestamp("timestampColumn", nowGMTPlus4);//convert date to GMT+4 timezone

Первый метод возвращает: 1461100256000 = 19/04/2016 - 21:10 : 56 GMT

Второй метод возвращает: 1461100256000 = 19/04/2016 - 21:10:56 GMT

Третий метод возвращает: 1461085856000 = 19/04/2016 - 17 : 10: 56 GMT

Вместо Oracle, когда мы используем одни и те же вызовы, имеем:

Первый метод возвращает: 1461093056000 = 19/04/2016 - 19:10: 56 GMT

Второй метод возвращает: 1461100256000 = 19/04/2016 - 21:10:56 GMT

Третий метод возвращает: 1461085856000 = 19/04/2016 - 17: 10:56 GMT

Примечание: Нет необходимости указывать параметры для Oracle.

222
задан John Topley 18 December 2008 в 20:50
поделиться

3 ответа

Я нашел здесь недокументированная опция создать новое приложение с помощью более старой версии направляющих.

rails _2.1.0_ new myapp 
485
ответ дан Paweł Gościcki 4 November 2019 в 13:35
поделиться

Можно генерировать скелет с любой версией и потребовать той, которую Вы хотите в config/environment.rb:

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.1.2' unless defined? RAILS_GEM_VERSION

или использование команда "направляющих" формирует версию, которую Вы хотите так или иначе.

3
ответ дан Keltia 4 November 2019 в 13:35
поделиться

Необходимо также смотреть на "замораживание" драгоценных камней направляющих в приложение. Это помогает много с развертыванием, особенно в общих средах хостинга.

Просто изменяются RAILS_GEM_VERSION переменная в config/environment.rb и выпускают задачу граблей замораживания:

rake rails:freeze:gems
3
ответ дан Thiago Arrais 4 November 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: