JRuby на направляющих по сравнению с Ruby on Rails, что такое различие?

Я знаю, что это старый вопрос, но просто хотел поделиться тем, что я сделал, решение @Weibo Li в порядке, но проблема в том, что он поднимает критическое предупреждение сонара о назначении нестатической переменной статической переменной

способ, которым я разрешил его без предупреждений сонара, следующий

  1. Я меняю StatisticLogger на singlton class (уже не статический), как этот публичный класс StatisticLogger {private static StatisticLogger instance = null; частный Дао Дао;
    public static StatisticLogger getInstance() {
        if (instance == null) {
            instance = new StatisticLogger();
        }
        return instance;
    }
    
    protected StatisticLogger() {
    }
    
    public void setDao(Dao dao) {
        this.dao = dao;
    }
    public void AddLoginEvent(LogStatisticBean user){
        //TODO code it god damn it
    }
    public void AddDocumentEvent(LogStatisticBean user, Document document, DocumentActionFlags actionPerformed){
        //TODO code it god damn it
    }
    public  void addErrorLog(Exception e, String page,  HashMap<String, Object> parameters){
        ExceptionLogBean elb=new ExceptionLogBean();
        elb.setStuntDescription(e);
        elb.setSourcePage(page);
        elb.setParameters(parameters);
        if(dao!=null){ 
            dao.saveOrUpdateEntity(elb);
    }
    
    }
  2. Я создал службу (или компонент), которая автоматически выполняет службу, которую я хочу, и задаю ее в классе singlton. Это безопасно, так как весной она инициализирует все управляемые компоненты, прежде чем что-либо делать и это означает, что метод PostConstruct, приведенный ниже, всегда вызывается, прежде чем что-либо может получить доступ к StatisticLogger примерно так, как этот публичный класс @Component DaoSetterService {
    @Autowired
    private Dao dao0;
    
    @PostConstruct     
    private void setDaoValue () {
        StatisticLogger.getInstance().setDao(dao0);
    }
    
    }
  3. Вместо использования StatisticLogger в качестве статического класса я просто использую его как StatisticLogger. getInstance (), и я могу получить доступ ко всем методам внутри него
132
задан James McMahon 31 July 2009 в 02:18
поделиться

3 ответа

JRuby является реализацией Ruby, которая работает на JVM, тогда как Ruby Matz является реализацией C.

Основные характеристики для замечания:

  1. JRuby работает на VM's Java, и он или компилируется или интерпретируется вниз к байт-коду Java.
  2. JRuby может интегрироваться с кодом Java. Если у Вас есть Библиотеки классов Java (.jar's), можно сослаться и использовать их из кода Ruby с JRuby. В другом направлении можно также назвать код JRuby из Java. JRuby может также использовать возможности сервера приложений и JVM.
  3. JRuby обычно размещается в серверах JAVA-приложения, таких как GlassFish Sun или даже веб-сервер Tomcat.
  4. , Хотя Вы не можете использовать собственные драгоценные камни Ruby с JRuby, существуют реализации JRuby для большинства популярных библиотек Ruby.

существуют другие различия, которые перечислены в Wiki JRuby:

158
ответ дан 24 November 2019 в 00:10
поделиться

Я могу быть неправым, но я думаю, что можно упаковать JRuby на приложении для направляющих способом, Вы не можете сделать с нормальным RoR - смотрят на, Смешиваются или подобный. Позволяет продать, не отбрасывая Ваши штаны / открытие komono.

Тем не менее я не достаточно знаком с упаковкой RoR, не держите меня к ней :)

7
ответ дан 24 November 2019 в 00:10
поделиться

главным образом это должно работать то же. в jRoR можно получить доступ к материалу, который Вы не имели бы в RoR. Обычно главным образом беспокойство развертывания.

Однако, если Ваше приложение RoR пользуется собственными библиотеками, которые не имеют эквивалента, который работает на JVM, которая может быть болью. Однако большинство освобождает, имеют не собственную доступную версию (по крайней мере, популярные, с которыми я столкнулся).

3
ответ дан 24 November 2019 в 00:10
поделиться
Другие вопросы по тегам:

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