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
- Replace `require 'bundler/inline'` with `require 'windmill/inline'`
- Leave the gemfile block syntax as-is — it is fully supported
- 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.