The index.html.haml file that follows is from a very basic Rails app meant to demonstrate the convergence of
- some bespoke Script code (not relevant here; we're not getting that far)
- Twitter Bootstrap (currently using 3.03; any 3.0+ should be fine with the CSS styles here)
posabsolute's jQuery Validation Engine, (hereinafter "jQVE")
This is meant to be used by a Rails (3.2.16) app with Gems haml-rails 0.4 and haml 4.0.4, along with jqVE 2.6.2. The server is Thin 1.6.1.
I'm getting different error reports when running from the Rails app from Rails and when transpiling the Haml from the command line using the haml command-line utility.
Here's the output copied from the server log:
ActionView::Template::Error (/Users/jeffdickey/src/rails/meldd/csat-demo/app/views/welcome/index.html.haml:20: unknown regexp options - pa
/Users/jeffdickey/src/rails/meldd/csat-demo/app/views/welcome/index.html.haml:20: syntax error, unexpected $undefined
...group-addon'>Node Index</span>\n <input#{
... ^):
17: %span.input-group-addon Selector
18: %input.start-selector.form-control#start_selector{type: "text",
19: name: "start-selector",
20: data-validation-engine: "validate[required]"}
21: .input-group
22: %span.input-group-addon Node Index
23: %input.form-control#start_nodeindex{type: "number"}
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/template.rb:297:in `module_eval'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/template.rb:297:in `compile'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/template.rb:244:in `block in compile!'
<internal:prelude>:10:in `synchronize'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/template.rb:232:in `compile!'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/template.rb:144:in `block in render'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications.rb:125:in `instrument'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/template.rb:143:in `render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/template_renderer.rb:47:in `block (2 levels) in render_template'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications.rb:123:in `block in instrument'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications.rb:123:in `instrument'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/abstract_renderer.rb:38:in `instrument'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/template_renderer.rb:46:in `block in render_template'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/template_renderer.rb:54:in `render_with_layout'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/template_renderer.rb:45:in `render_template'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/template_renderer.rb:18:in `render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/renderer.rb:36:in `render_template'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_view/renderer/renderer.rb:17:in `render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/rendering.rb:110:in `_render_template'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/streaming.rb:225:in `_render_template'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/rendering.rb:103:in `render_to_body'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/renderers.rb:28:in `render_to_body'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/compatibility.rb:50:in `render_to_body'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/rendering.rb:88:in `render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/rendering.rb:16:in `render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
/usr/local/lib/ruby/1.9.1/benchmark.rb:295:in `realtime'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/core_ext/benchmark.rb:5:in `ms'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/instrumentation.rb:40:in `block in render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/instrumentation.rb:83:in `cleanup_view_runtime'
vendor/ruby/1.9.1/gems/activerecord-3.2.16/lib/active_record/railties/controller_runtime.rb:24:in `cleanup_view_runtime'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/instrumentation.rb:39:in `render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/implicit_render.rb:10:in `default_render'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/implicit_render.rb:5:in `send_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/base.rb:167:in `process_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/rendering.rb:10:in `process_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/callbacks.rb:18:in `block in process_action'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:414:in `_run__1992340995968432598__process_action__1957240147877452621__callbacks'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:405:in `__run_callback'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:81:in `run_callbacks'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/callbacks.rb:17:in `process_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/rescue.rb:29:in `process_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications.rb:123:in `block in instrument'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/notifications.rb:123:in `instrument'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
vendor/ruby/1.9.1/gems/activerecord-3.2.16/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/base.rb:121:in `process'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/abstract_controller/rendering.rb:45:in `process'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal.rb:203:in `dispatch'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_controller/metal.rb:246:in `block in action'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/routing/route_set.rb:73:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/routing/route_set.rb:36:in `call'
vendor/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'
vendor/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'
vendor/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/routing/route_set.rb:608:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/etag.rb:23:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/head.rb:14:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/flash.rb:242:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/cookies.rb:341:in `call'
vendor/ruby/1.9.1/gems/activerecord-3.2.16/lib/active_record/query_cache.rb:64:in `call'
vendor/ruby/1.9.1/gems/activerecord-3.2.16/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:405:in `_run__453547187854990700__call__3903132365996989445__callbacks'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:405:in `__run_callback'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/callbacks.rb:81:in `run_callbacks'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/reloader.rb:65:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/rack/logger.rb:32:in `call_app'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/rack/logger.rb:16:in `block in call'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/tagged_logging.rb:22:in `tagged'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/rack/logger.rb:16:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/request_id.rb:22:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/runtime.rb:17:in `call'
vendor/ruby/1.9.1/gems/activesupport-3.2.16/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/lock.rb:15:in `call'
vendor/ruby/1.9.1/gems/actionpack-3.2.16/lib/action_dispatch/middleware/static.rb:63:in `call'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/engine.rb:484:in `call'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/application.rb:231:in `call'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/content_length.rb:14:in `call'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/rack/log_tailer.rb:17:in `call'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/connection.rb:82:in `block in pre_process'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/connection.rb:80:in `catch'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/connection.rb:80:in `pre_process'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/connection.rb:55:in `process'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/connection.rb:41:in `receive_data'
vendor/ruby/1.9.1/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'
vendor/ruby/1.9.1/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/backends/base.rb:73:in `start'
vendor/ruby/1.9.1/gems/thin-1.6.1/lib/thin/server.rb:162:in `start'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/handler/thin.rb:13:in `run'
vendor/ruby/1.9.1/gems/rack-1.4.5/lib/rack/server.rb:268:in `start'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/commands/server.rb:70:in `start'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/commands.rb:55:in `block in <top (required)>'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/commands.rb:50:in `tap'
vendor/ruby/1.9.1/gems/railties-3.2.16/lib/rails/commands.rb:50:in `<top (required)>'
vendor/ruby/1.9.1/gems/spring-1.0.0/lib/spring/client/rails.rb:29:in `require'
vendor/ruby/1.9.1/gems/spring-1.0.0/lib/spring/client/rails.rb:29:in `call'
vendor/ruby/1.9.1/gems/spring-1.0.0/lib/spring/client/command.rb:7:in `call'
vendor/ruby/1.9.1/gems/spring-1.0.0/lib/spring/client.rb:23:in `run'
vendor/ruby/1.9.1/gems/spring-1.0.0/bin/spring:31:in `<top (required)>'
/bin/spring:16:in `load'
/bin/spring:16:in `<main>'
Running haml --trace app/view/welcome/index.html.haml yields the following output to stderr:
/Users/jeffdickey/src/rails/meldd/csat-demo/vendor/ruby/1.9.1/gems/haml-4.0.4/lib/haml/engine.rb:131:in `rescue in render': app/views/welcome/index.html.haml:20: unknown regexp options - pa (Haml::SyntaxError)
app/views/welcome/index.html.haml:20: syntax error, unexpected $undefined
...group-addon'>Node Index</span>\n <input#{
... ^
from /Users/jeffdickey/src/rails/meldd/csat-demo/vendor/ruby/1.9.1/gems/haml-4.0.4/lib/haml/engine.rb:128:in `render'
from /Users/jeffdickey/src/rails/meldd/csat-demo/vendor/ruby/1.9.1/gems/haml-4.0.4/lib/haml/exec.rb:313:in `process_result'
from /Users/jeffdickey/src/rails/meldd/csat-demo/vendor/ruby/1.9.1/gems/haml-4.0.4/lib/haml/exec.rb:43:in `parse'
from /Users/jeffdickey/src/rails/meldd/csat-demo/vendor/ruby/1.9.1/gems/haml-4.0.4/lib/haml/exec.rb:23:in `parse!'
from /Users/jeffdickey/src/rails/meldd/csat-demo/vendor/ruby/1.9.1/gems/haml-4.0.4/bin/haml:9:in `<top (required)>'
from ./bin/haml:16:in `load'
from ./bin/haml:16:in `<main>'
The Haml command-line output is complaining about "unknown regex options", as pa, and an unexpected $undefined. There are exactly three ways the consecutive letters p and a appear in the input file:
- as part of the HTML tag
span, e.g. at lines 17 and 22; - as part of CSS class names, e.g.
.panel,.page-header,.page-content; - as part of the boilerplate content following line 46.
@jnf, @siaorsi, thanks! I was able to get rid of the error by using either
or
I prefer and will use the second form because
Shout out to
CordialMayhemandgalaxian_primeon Reddit who gave equivalent answers when I asked there too.