Действительно ли возможно назвать хранимую процедуру MySQL от Ruby?

Если вы используете framework как Symfony , то могут быть некоторые правила CSP (Content Security Policy). Необходимо добавить в файл конфигурации URL скрипта, который вызывается, иначе symfony отказывается загружать скрипт.

Также обратите внимание, что, возможно, до того, как вы загрузили скрипт аналитики с google-analytics.com , а теперь вы загрузили с googletagmanager.com

Файл конфигурации в приложении (пример для Symfony):

csp:
  enabled: true
  enforce:
    script-src: // valid source of javascript
      - '*.googletagmanager.com'

Документация: https://content-security-policy.com/

Использование правил CSP является одним из лучшие вещи для повышения безопасности ваших сайтов. они могут заблокировать использование стороннего javascript для кражи паролей пользователей, например .

5
задан Otto 23 January 2009 в 15:31
поделиться

3 ответа

Это работало бы для обертывания процедуры в функцию? Если Ruby, блюющий ни из-за каких возвращенных строк (...can't return a result set in the given context...), это может зафиксировать его:

DELIMITER $

CREATE PROCEDURE tProc()
BEGIN
    SET @a = 'test';
END;
$

CREATE FUNCTION tFunc()
RETURNS INT
BEGIN
    CALL tProc();
    RETURN 1;
END;
$

DELIMITER ;

SELECT tFunc() FROM DUAL;
>> 1

SELECT @a FROM DUAL;
>> 'test'

Хотя, реалистично, это не очень расширяемое решение.

Продолжение: я - симпатичный n00by в Ruby/ActiveRecord, но этот пример определенно работает

ActiveRecord::Base.establish_connection(authopts)

class TestClass < ActiveRecord::Base
end

test_class = TestClass.new
puts %{#{test_class.connection.select_one('SELECT tFunc() AS tf FROM DUAL')}}
>> tf1

Используя CALL tProc() приведший к ошибке, подобной Вашему.

1
ответ дан 15 December 2019 в 01:12
поделиться

Вы использование ActiveRecord:: Base.connection.execute? Этот метод должен позволить Вам выполнять некоторый произвольный SQL-оператор, который наивно не поддерживается в Активной Рекордной обертке.

1
ответ дан 15 December 2019 в 01:12
поделиться

Я отправил патч для Rails 2.3.4, который дает возможность конфигурации для решения этой проблемы. Пожалуйста, остановитесь у моего билета и покажите, что вы его поддерживаете!

https://rails.lighthouseapp.com/projects/8994/tickets/3151-mysql-adapter-update-to-enable-use-of-stored-procedures

2
ответ дан 15 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

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