What is MIME type "application/x-erb"?
A MIME type is a string that tells browsers and other tools how to handle a particular kind of file.
application/x-erb identifies files that mix HTML and Ruby code. These files are preprocessed on the server to embed dynamic Ruby output into static HTML.This MIME type tells the system to run Ruby code inside the document before sending it to the browser.
It is most often used in web templating systems, especially in Ruby-based frameworks.
- Web templating: It enables dynamic content generation by combining server code with HTML.
- Server-side preprocessing: The Ruby code is executed to produce plain HTML.
- Integration: Common in frameworks like Ruby on Rails, which use such templates for rendering views.
For additional details on MIME types and their use, visit this reference.
Associated file extensions
Usage Examples
HTTP Header
When serving content with this MIME type, set the Content-Type header:
Content-Type: application/x-erb
HTML
In HTML, you can specify the MIME type in various elements:
<a href="file.dat" type="application/x-erb">Download file</a>
Server-side (Node.js)
Setting the Content-Type header in Node.js:
const http = require('http');
http.createServer((req, res) => {
res.setHeader('Content-Type', 'application/x-erb');
res.end('Content here');
}).listen(3000);
Associated file extensions
FAQs
Why doesn't my web browser display application/x-erb files correctly?
Browsers cannot execute Ruby code natively; they are designed to render standard HTML, CSS, and JavaScript. If a server sends a file with the application/x-erb MIME type, the browser will typically prompt you to download it. The server must process the file first and send the result as text/html.
Is it safe to serve files as application/x-erb to the public?
No, exposing raw application/x-erb files is a security risk. These files contain server-side source code and logic that should be hidden from users. You should ensure your web server executes the Ruby code and returns only the resulting HTML.
What is the difference between .erb and .rhtml files?
Both extensions use the application/x-erb MIME type and contain Embedded Ruby, but .rhtml is a legacy extension from early versions of Ruby on Rails. Modern applications almost exclusively use the .erb extension.
How should I configure Apache or Nginx for .erb files?
You should not configure the web server to serve these files directly. Instead, configure your server to act as a reverse proxy that passes requests to a Ruby application server (like Puma or Unicorn). The application server processes the template and returns the content with a text/html MIME type.
What does the 'x-' prefix mean in application/x-erb?
The x- prefix indicates that this is a non-standard or experimental MIME type not officially registered with the IANA. It is a convention used within the developer community to identify Ruby templates before they are rendered into standard content types.
Can I use text/html instead of application/x-erb?
For the source file on your disk, you should treat it as application/x-erb so editors recognize the syntax. However, the output sent to the user's browser must be text/html. Using application/x-erb for the final delivery will prevent the page from rendering as a website.
General FAQ
What is a MIME type?
A MIME (Multipurpose Internet Mail Extensions) type is a standard that indicates the nature and format of a document, file, or assortment of bytes. MIME types are defined and standardized in IETF's RFC 6838.
MIME types are important because they help browsers and servers understand how to process a file. When a browser receives a file from a server, it uses the MIME type to determine how to display or handle the content, whether it's an image to display, a PDF to open in a viewer, or a video to play.
MIME types consist of a type and a subtype, separated by a slash (e.g., text/html, image/jpeg, application/pdf). Some MIME types also include optional parameters.
How do I find the MIME type for a file?
You can check the file extension or use a file identification tool such as file --mime-type on the command line. Many programming languages also provide libraries to detect MIME types.
Why are multiple MIME types listed for one extension?
Different applications and historical conventions may use alternative MIME identifiers for the same kind of file. Showing them all helps ensure compatibility across systems.