windmill-labs/windmill · error

Detected `require 'bundler/inline'` - please replace with `r

Error message

Detected `require 'bundler/inline'` - please replace with `require 'windmill/inline'`.
Your Gemfile syntax will continue to work as-is.

What it means

Raised by the Ruby dependency resolver when the script requires 'bundler/inline' directly. Windmill injects its own compatible inline runner ('windmill/inline'); the stock bundler one would bypass the proxy that enforces dependency management. The message is instructive by design: gemfile block syntax keeps working unchanged, only the require line must be swapped.

Source

Thrown at backend/windmill-worker/src/ruby_executor.rs:286

pub async fn resolve<'a>(
    job_id: &Uuid,
    inner_content: &str,
    mem_peak: &mut i32,
    canceled_by: &mut Option<CanceledBy>,
    job_dir: &str,
    conn: &Connection,
    worker_name: &str,
    w_id: &str,
) -> Result<String, Error> {
    lazy_static::lazy_static! {
        static ref BUNDLER_RE: Regex = Regex::new(r#"(?m)^\s*require\s*['"]bundler/inline['"]"#).unwrap();
        static ref UNSUPPORTED_SOURCE_RE: Regex = Regex::new(r#"(?m)(?<src>^\s*source\s*['"]\S+://(?<usr>\S+):(?<passwd>\S+)@.*['"]\s*\n)"#).unwrap();
        static ref SOURCES_RE: Regex = Regex::new(r#"\S+://(?<creds>\S+:\S+)@(?<url>\S*)"#).unwrap();
    }

    if BUNDLER_RE.find(&inner_content).is_some() {
        return Err(anyhow!(
            "Detected `require 'bundler/inline'` - please replace with `require 'windmill/inline'`.
Your Gemfile syntax will continue to work as-is."
        )
        .into());
    }

    let gemfile: String = windmill_parser_ruby::parse_ruby_requirements(&inner_content)?
        .lines()
        .map(str::trim)
        .filter(|s| !s.is_empty() && !s.starts_with('#'))
        .join("\n");

    if let Some(caps) = UNSUPPORTED_SOURCE_RE.captures(&gemfile) {
        if let (Some(src_m), Some(usr_m), Some(passwd_m)) =
            (caps.name("src"), caps.name("usr"), caps.name("passwd"))
        {
            let cause = src_m
                .as_str()

View on GitHub (pinned to e474e8803c)

Solutions

  1. Replace `require 'bundler/inline'` with `require 'windmill/inline'`
  2. Leave the gemfile block syntax as-is — it is fully supported
  3. Re-run the job after the one-line require change
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at backend/windmill-worker/src/ruby_executor.rs:286 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/0ae47a85f809e9fc. Report an issue: GitHub.