Переменные и константы являются указателями на ячейки памяти. Ruby делает это по умолчанию, поэтому вам не нужно «эмулировать» поведение PVP вручную. Доказательства:
a = "hi"
b = a
a.upcase!
puts a
# => "HI"
puts b
# => "HI"
Что касается вашего @app_session
вопроса, я бы сделал что-то вроде этого:
class ApplicationController < ActionController::Base
def app_session
session[@current_app[:uid]]
end
end
Это позволяет вам вызывать метод app_session, чтобы впоследствии вы могли легко изменить реализацию. (Скажем, если вы обнаружите, что вам нужно использовать константу вместо переменной экземпляра или что-то еще.)