{"record":{"id":"650632de400c6221","repo":"Shopify/liquid","slug":"template-default-resource-limits","errorCode":null,"errorMessage":"Template.default_resource_limits=","messagePattern":"Template\\.default_resource_limits=","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"lib/liquid/template.rb","lineNumber":73,"sourceCode":"\n      def tags\n        Environment.default.tags\n      end\n\n      def register_tag(name, klass)\n        Deprecations.warn(\"Template.register_tag\", \"Environment#register_tag\")\n        Environment.default.register_tag(name, klass)\n      end\n\n      # Pass a module with filter methods which should be available\n      # to all liquid views. Good for registering the standard library\n      def register_filter(mod)\n        Deprecations.warn(\"Template.register_filter\", \"Environment#register_filter\")\n        Environment.default.register_filter(mod)\n      end\n\n      private def default_resource_limits=(limits)\n        Deprecations.warn(\"Template.default_resource_limits=\", \"Environment#default_resource_limits=\")\n        Environment.default.default_resource_limits = limits\n      end\n\n      def default_resource_limits\n        Environment.default.default_resource_limits\n      end\n\n      # creates a new <tt>Template</tt> object from liquid source code\n      # To enable profiling, pass in <tt>profile: true</tt> as an option.\n      # See Liquid::Profiler for more information\n      def parse(source, options = {})\n        environment = options[:environment] || Environment.default\n        new(environment: environment).parse(source, options)\n      end\n    end\n\n    def initialize(environment: Environment.default)\n      @environment = environment","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/Shopify/liquid/blob/807d45a6b3d4568e64e86b375e3702df2c7c860c/lib/liquid/template.rb#L55-L91","documentation":"Liquid::Template.default_resource_limits= is a private deprecated setter; resource-limit defaults (render length/time, template nesting) now live on Liquid::Environment. The shim forwards to Environment#default_resource_limits= and emits a deprecation warning.","triggerScenarios":"Calling Liquid::Template.send(:default_resource_limits=, {...}) or older code that called the setter directly when it was public.","commonSituations":"Hardening untrusted-template rendering (memory/time caps) with pre-Environment Liquid configuration code.","solutions":["Set Liquid::Environment.default.default_resource_limits = limits","Or configure resource_limits on the specific Environment used to parse/render untrusted templates"],"exampleFix":"// before\nLiquid::Template.send(:default_resource_limits=, { render_length_limit: 100_000 })\n// after\nLiquid::Environment.default.default_resource_limits = { render_length_limit: 100_000 }","handlingStrategy":"validation","validationCode":"limits = { render_length_limit: 100_000, render_time_limit: 5 }\nLiquid::Environment.default.default_resource_limits = limits","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Configure resource limits on the Environment used for untrusted templates","Treat the Template-level setter as private/legacy and never call it with send","Document resource-limit configuration in one place per application"],"tags":["ruby","liquid","deprecation","resource-limits"],"backgroundTag":"deprecated-api-usage","analyzedSha":"807d45a6b3d4568e64e86b375e3702df2c7c860c","analyzedAt":"2026-09-08T11:31:38.917Z","contentChangedAt":"2026-09-08T11:31:38.917Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}