これが私がやりたいことの擬似コードです:
if @current_user is defined then puts @current_user.name
変数が定義されているかどうかを本当に知る必要がありますか?それとも、変数に有効なUserオブジェクトが含まれているかどうかを知るだけで十分ですか?
インスタンス変数はNameError、定義されていない場合でも、 を発生させることはありません。それらは に評価されるだけnilなので、それを確認するだけです:
puts @current_user.name unless @current_user.nil?
あなたの質問にはruby-on-rails のActiveSupportタグが付けられているので、とにかくロードしたと仮定して、Object#try拡張メソッドを使用することもできます。
puts @current_user.try(:name)