Git Product home page Git Product logo

wallaby-rails's People

Contributors

tian-im avatar

Stargazers

Victor Pereira avatar Michalis Polakis avatar Bernie Chiu avatar Aleksandr Balakiriev avatar KAK avatar Ahmad avatar Thomas Klemm avatar Marco Roth avatar Rostyslav Diachok avatar Kurnia Muhamad avatar Octavian Neamțu avatar 浮生 avatar Yalçın Açıkyıldız avatar Robby Dhillon avatar Y avatar Wade avatar Ekrem Karaca avatar Rogerio Marques avatar cheneyyao avatar Viktor Sheiko avatar Jagjot Singh avatar Amit Kosti avatar Cary avatar  avatar Roman Sokhan avatar Paul Procopiou avatar Arpad Lukacs avatar @Sara0871 avatar Mikal avatar Ricardo Díaz avatar Manuel Ortega avatar Muhamad Azman avatar Alexandre Schmitt avatar Adam Kirkwood avatar Danilo Assis avatar Ismael Stahelin avatar Erik Wessel avatar Yunzheng avatar Vesa Vänskä avatar Alessio Fanelli avatar  avatar Alex Lopez avatar Samir M. Braga avatar Vaidotas avatar DarkWater avatar Christian Bankester avatar Jeff Meyers avatar  avatar Joel Van Horn avatar Louis Taylor avatar Daniils Kostornijs avatar Vlad Radulescu avatar Marc Gayle avatar Sergey Fedorov avatar Mehmet Aydogdu avatar Jeremy Hinegardner avatar Ryo Naruse avatar Andrii Konchyn avatar Greg Miklaszewski avatar turnspike avatar Yuta Nishimori avatar Anıl İyidoğan avatar Ivan Kapelyukhin avatar fathiabdrahim avatar Khairi Adnan avatar  avatar Jerry Chen avatar Mohammed Sadiq avatar Oğuz Bayat avatar Muhammet Dilmaç avatar Mike avatar  avatar David Kang avatar Fly Chang avatar Mathieu Le Tiec avatar Pawel Niewiadomski avatar Sunil Shenoy avatar Jason Barry avatar  avatar Mathieu Lajugie avatar Rodrigo Rosenfeld Rosas avatar Igor Zubkov avatar Vladislav Isakov avatar  avatar Clément Joubert avatar Anderson Bravalheri avatar Robin van Dijk avatar Jeff Federman avatar Brandon Zylstra avatar Elikem Adadevoh avatar Marcel Körtgen avatar Kenn Ejima avatar Douglas Lise avatar KAWAHARA Keisuke avatar  avatar  avatar David Bird avatar Guang avatar Andrey Eremin avatar Cristian Molina avatar

Watchers

Glenn Davy avatar Charles Magid avatar Daniel Hanke avatar Sameera (Sam) avatar Tony Day avatar Matenia Rossides avatar leo liang avatar Geoff Hodgson avatar Dave Cruikshank avatar Chris Teague avatar Yuji Yokoo avatar Bruno Santos avatar Estevão de Abreu Machado avatar James Cloos avatar Todd Price avatar Charles Peach avatar Joseh-Henrique avatar Ace Dimasuhid avatar ryan avatar Edd Smith avatar Mathew Button avatar

wallaby-rails's Issues

Unable to perform "or" search with nil

It appears searching nil in an "or" query does not work. For example: foo:=nil returns 1000 records, foo:=nil,1 returns 0 records. Perhaps nil is interpreted as a string when in an "or" clause?

This is using wallaby-active_record v0.2.1.

Support Rails 6 in Wallaby 5

It appears Rails 6 support was added in Wallaby 6, but we currently use Wallaby 5. This makes Wallaby a blocker to upgrading to Rails 6.

Wallaby 6 has a lot of backwards incompatible changes with little documentation on the upgrade process (except for the change log). It also depends on Bootstrap 4 which is incompatible with Bootstrap 3, which is another expensive upgrade.

Would it be difficult to make Wallaby 5 compatible with Rails 6? Adding conditionals on Rails versions where changes are incompatible would be preferred instead of only supporting one major Rails version per major Wallaby version.

Nested CSS classes are difficult to override

I find it difficult to customize Wallaby CSS because of the deep nesting. One needs to mimic the nesting in order to add our own CSS.

If CSS is defined in a flat structure then it will be much easier to extend and override.

For example:

# Before
.foo {
  .bar {
  }
}

# After
.foo-bar {
}

Also only adding CSS to classes instead of direct HTML tags will be good too. For example:

# Before
.foo {
  a {
  }
}

# After
.foo-link {
}

Singleton can't be dumped error in Rails 7.0.1

Upgrading from Rails 7.0.0 to Rails 7.0.1 caused this error when I visit a wallaby resource index page.

Failure/Error: Time.use_zone(find_time_zone, &block)
  ActionView::Template::Error:
  singleton can't be dumped
./app/controllers/application_controller.rb:81:in `set_time_zone!'

I'm uncertain yet if this is specific to my app or if it's an issue in Wallaby.

cc @tian-im

Missing translation in 6.1.4

I'm seeing a missing translation error since upgrading Wallaby from 6.1.3 to 6.1.4 (on Rails 6.1.4)

ActionView::Template::Error:
  translation missing: en-US.wallaby.map.missing_mode_for_model_class
# ./config/initializers/localeapp.rb:31:in `call'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/i18n-1.8.11/lib/i18n.rb:382:in `handle_exception'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/i18n-1.8.11/lib/i18n.rb:212:in `translate'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/utils/wallaby/locale.rb:18:in `call'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/utils/wallaby/locale.rb:18:in `t'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/wallaby/map.rb:163:in `map_of'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/wallaby/map.rb:106:in `authorizer_map'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/concerns/wallaby/authorizable.rb:93:in `authorizer_of'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/concerns/wallaby/authorizable.rb:73:in `authorized?'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/concerns/wallaby/authorizable.rb:83:in `unauthorized?'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/helpers/wallaby/links_helper.rb:42:in `new_link'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.4/app/views/wallaby/resources/show/_has_many.html.erb:9:in `___sers_rbates__rbenv_versions_______lib_ruby_gems_______gems_wallaby_______app_views_wallaby_resources_show__has_many_html_erb__4206216278495891214_169900'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/base.rb:247:in `public_send'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/base.rb:247:in `_run'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/template.rb:154:in `block in render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:205:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/template.rb:345:in `instrument_render_template'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/template.rb:152:in `render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/partial_renderer.rb:285:in `block in render_partial_template'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:203:in `block in instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:203:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/partial_renderer.rb:280:in `render_partial_template'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/partial_renderer.rb:271:in `render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/renderer.rb:81:in `render_partial_to_object'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/renderer.rb:53:in `render_partial'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/helpers/rendering_helper.rb:45:in `render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/services/wallaby/type_renderer.rb:16:in `render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.3/lib/helpers/wallaby/resources_helper.rb:23:in `type_render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.4/app/views/wallaby/resources/show.html.erb:17:in `block in ___sers_rbates__rbenv_versions_______lib_ruby_gems_______gems_wallaby_______app_views_wallaby_resources_show_html_erb__691929870940969589_169760'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.4/app/views/wallaby/resources/show.html.erb:14:in `each'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.4/app/views/wallaby/resources/show.html.erb:14:in `___sers_rbates__rbenv_versions_______lib_ruby_gems_______gems_wallaby_______app_views_wallaby_resources_show_html_erb__691929870940969589_169760'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/base.rb:247:in `public_send'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/base.rb:247:in `_run'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/template.rb:154:in `block in render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:205:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/template.rb:345:in `instrument_render_template'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/template.rb:152:in `render'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/template_renderer.rb:61:in `block (2 levels) in render_template'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:203:in `block in instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:203:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/template_renderer.rb:56:in `block in render_template'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/actionview-6.1.4.4/lib/action_view/renderer/template_renderer.rb:71:in `block in render_with_layout'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:203:in `block in instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
# /Users/rbates/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.4/lib/active_support/notifications.rb:203:in `instrument'

Any ideas?

How to create custom types?

Hello,

Wallaby looks great, but I am a bit confused by the docs:

I see this:

    # Or you can update its type to `raw`
    # `raw` is built-in type to render HTML instead of escaping the HTML tags and entities.
    self.index_fields[:description][:type] = 'raw'

and I am wondering where I would put the HTML that is generated?

For example: how do you create custom inputs? Like if i wanted one main input and a couple other hidden ones that are derived from the first one using JavaScript. How would I go about doing that using wallaby?

Thanks!

Difficulty adding custom form action

I'm attempting to add an extend_trial action to AccountsController. I added a route:

resources :accounts do
  member do
    get :extend_trial
  end
end

And the controller action which has the same behavior as the edit action:

def extend_trial
  edit
end

And then I copied the edit view to extend_trial.html.erb with one field:

<%
# decorate first on every page or partial
decorated = decorate resource
%>
<article class="resource">
  <div class="resource__header">
    <h1><%= t 'labels.edit', id: decorated.id %></h1>
    <%= render 'resource_navs' %>
  </div>
  <%= render 'flash_messages' %>
  <section>
    <div class="resource__container">
      <%= form_for decorated, url: url_for(action: :show), method: :put, html: { multipart: true }, builder: Wallaby::FormBuilder do |form| %>
        <% decorated.errors[:base].try do |messages| %>
          <% Array(messages).each do |message| %>
            <div class="alert alert-danger alert-dismissible" role="alert">
              <%= raw message %>
            </div>
          <% end %>
        <% end %>
        <%= type_render decorated.form_type_of("trial_end_date"), field_name: "trial_end_date", form: form %>
        <%= form.button t('buttons.save'), class: 'btn btn-primary' %>
        <%= cancel_link html_options: { class: 'btn btn-default' } %>
      <% end %>
    </div>
  </section>
</article>

This produced the following error:

undefined method `extend_trial_metadata_of' for #<SupportAdmin::AccountDecorator:0x00007ff815720078>

It took some digging to realize there's a form_metadata_of method which I assume is the behavior I want so I aliased it:

# in AccountDecorator
alias_method :extend_trial_metadata_of, :form_metadata_of

Then I get this error:

ActionView::MissingTemplate - Missing partial /extend_trial/_datetime, /_datetime, support_admin/accounts/extend_trial/_datetime, support_admin/accounts/_datetime, support_admin/application/extend_trial/_datetime, support_admin/application/_datetime, wallaby/resources/extend_trial/_datetime, wallaby/resources/_datetime with {:locale=>[:"en-US"], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}. Searched in:
  * "/Users/rbates/code/envisage/app/views"
  * "/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/kaminari-core-1.1.1/app/views"
  * "/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/ckeditor-4.2.4/app/views"
  * "/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/wallaby-6.1.0/app/views"
  * "/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/devise_invitable-1.7.4/app/views"
  * "/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/devise-4.5.0/app/views"

So I add a partial at accounts/_datetime.html.erb which delegates to the internal date time partial:

<%= render partial: "wallaby/resources/form/datetime", locals: local_assigns %>

The form now renders (yay) but doesn't look quite right since the body tag doesn't have an edit class due to a different action name. This would be resolved by not nesting CSS as mentioned in #174.

When I submit the form I get this error:

NameError - undefined local variable or method `form' for #<#<Class:0x00007fc934466f18>:0x00007fc93bfdb068>
Did you mean?  fork:
  app/views/support_admin/accounts/_datetime.html.erb:1:in `_app_views_support_admin_accounts__datetime_html_erb__554914958012286755_70251162594040'

The logs show the update action worked and redirected to the show action which resulted in this error. It appears the custom datetime partial I added is being used by the show action but does not have a form variable. It is confusing to have two partials with the same name that have different behavior and locals. I suggest renaming the the form partials to datetime_field and moving them out of the form directory. Flat lists with unique names are good for customizability.

I moved the partial to accounts/extend_trial/datetime which resolves the error and renders the page.

Overall this was quite difficult to figure out. I suggest smoothing out this process and adding some documentation for customizing Wallaby in this way.

Unable to have two controllers manage the same resource

In our app we have an Account model with two controllers: AccountsController and ExtendTrialsController. Both of these controllers use the account model. The ExtendTrialsController manages extending the account trial period:

class Admin::ExtendTrialsController < Admin::ApplicationController
  self.model_class = Account

  def update
    # extend the trial
  end

  private

  def resource
    @resource ||= Account.find_by(token: params[:id])
  end
end

The problem is the main menu navigation thinks this controller is the main controller for managing accounts and links instead of the AccountsController.

Reloading slow in development

I did some quick benchmarking and found that adding Wallaby to our app adds over 1 second to code reloading time in development.

After changing the code and reloading the page it takes 2.6 second to finish loading a given page with Wallaby and 1.4 seconds if Wallaby is removed from the project. This is when reloading a page unrelated to the admin pages.

My guess is because Wallaby is force-reloading all models where as I believe Rails loads what it needs as needed.

What is the reason for Wallaby doing its own code reloading and not relying on Rails code reloading? Is it to support configuring decorators at the class level? If so perhaps you can store that config in a plain hash and attempt to apply it when using a decorator instance.

It seems like half the issues I've ran into have to do with the custom code reloading. This is a tricky thing to get right and will likely cause further issues in future Rails versions and conflicts with other gems.

Would it be possible to remove the custom code reloading and fall back to however Rails wants to load/reload the code?

How to improve index rendering performance?

Rendering the index is quite slow (up to few seconds) because each makes separate render call. Maybe we could rewrite it to have some kind of rendering classes that can optionally render a partial?

class IndexRenderer
  def integer(some_value)
    some_value.to_s
  end

  def some_complex_type(some_value)
    view.render 'some_complex_type', value: some_value
  end
end

Turbolinks config requires `turbolinks.js` be precompiled

Enabling the turbolinks config causes this error:

Sprockets::Rails::Helper::AssetNotPrecompiled - Asset was not declared to be precompiled in production.
Add `Rails.application.config.assets.precompile += %w( turbolinks.js )` to `config/initializers/assets.rb` and restart your server

This is because turbolinks.js is included as a separate script in the HTML when this config is enabled.

I thinks it's better for turbolinks to be included in application.js so it's managed by sprockets and not a separately loaded JS file. Then you could remove this turbolinks config and add documentation for enabling it by overriding application.js

I18n locales don't have wallaby namespace

It appears the locales in wallaby-core config/locales/wallaby.en.yml are not scoped under a wallaby key. This results in two issues:

  • These locales could conflict with other locales in the app.
  • If one needs to add these locales in their app (if they don't have en locale) it isn't clear it is for Wallaby.

database migrations fail when decorator invokes form_fields and table does not exist

I've included a condition to check if the db table exists, so that this code is skipped when the migrations are run.

  if ActiveRecord::Base.connection.table_exists? 'admins'
    self.form_fields[:password] = {
      type: 'password',
      label: 'Password',
      name: 'password'
    }
  end

Without the above check this error is triggered when running rails db:drop or rails db:migrate

$ rails db:migrate
rails aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "admins" does not exist
LINE 8:                WHERE a.attrelid = '"admins"'::regclass
                                          ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
             (SELECT c.collname FROM pg_collation c, pg_type t
               WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation),
                     col_description(a.attrelid, a.attnum) AS comment
                FROM pg_attribute a LEFT JOIN pg_attrdef d
                  ON a.attrelid = d.adrelid AND a.attnum = d.adnum
               WHERE a.attrelid = '"admins"'::regclass
                 AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `async_exec'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `block in query'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:87:in `query'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:739:in `column_definitions'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:227:in `columns'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/schema_cache.rb:56:in `columns'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/schema_cache.rb:62:in `columns_hash'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/model_schema.rb:441:in `load_schema!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/attributes.rb:233:in `load_schema!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/attribute_decorators.rb:28:in `load_schema!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/model_schema.rb:436:in `load_schema'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/model_schema.rb:344:in `columns'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator/fields_builder.rb:7:in `general_fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator.rb:57:in `general_fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator.rb:4:in `fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator.rb:18:in `form_fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/decorators/wallaby/resource_decorator.rb:20:in `form_fields'
/Users/fuzzyri/git/stockland_api/app/decorators/admin_decorator.rb:35:in `<class:AdminDecorator>'
/Users/fuzzyri/git/stockland_api/app/decorators/admin_decorator.rb:1:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `block in load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:662:in `new_constants_in'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:476:in `load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:375:in `block in require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/concurrency/share_lock.rb:150:in `exclusive'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:11:in `loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:358:in `require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:511:in `load_missing_constant'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:203:in `const_missing'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:268:in `const_get'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:268:in `block in constantize'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `each'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `inject'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `constantize'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/core_ext/string/inflections.rb:66:in `constantize'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:16:in `block in preload'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:13:in `each'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:13:in `preload'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:24:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `block in load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:662:in `new_constants_in'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:476:in `load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:375:in `block in require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/concurrency/share_lock.rb:150:in `exclusive'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:11:in `loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:358:in `require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:511:in `load_missing_constant'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:203:in `const_missing'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/config/routes.rb:7:in `block (2 levels) in <top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/mapper.rb:855:in `scope'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/config/routes.rb:6:in `block in <top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in `instance_exec'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in `eval_block'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:371:in `draw'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/config/routes.rb:1:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `block in load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `each'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:16:in `reload!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/file_update_checker.rb:77:in `execute'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:27:in `updater'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/finisher.rb:119:in `block in <module:Finisher>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `instance_exec'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `run'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:54:in `run_initializers'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application.rb:352:in `initialize!'
/Users/fuzzyri/git/stockland_api/config/environment.rb:5:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `block in require'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application.rb:328:in `require_environment!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application.rb:448:in `block in run_tasks_blocks'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/bugsnag-5.0.1/lib/bugsnag/rake.rb:12:in `execute_with_bugsnag'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands/rake_proxy.rb:14:in `block in run_rake_task'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands/rake_proxy.rb:11:in `run_rake_task'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:51:in `run_command!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
/Users/fuzzyri/git/stockland_api/bin/rails:9:in `require'
/Users/fuzzyri/git/stockland_api/bin/rails:9:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in `call'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client/command.rb:7:in `call'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client.rb:30:in `run'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/bin/spring:49:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/binstub.rb:31:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/binstub.rb:31:in `<top (required)>'
/Users/fuzzyri/git/stockland_api/bin/spring:14:in `require'
/Users/fuzzyri/git/stockland_api/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
PG::UndefinedTable: ERROR:  relation "admins" does not exist
LINE 8:                WHERE a.attrelid = '"admins"'::regclass
                                          ^
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `async_exec'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:88:in `block in query'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:589:in `block in log'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:87:in `query'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:739:in `column_definitions'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:227:in `columns'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/schema_cache.rb:56:in `columns'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/connection_adapters/schema_cache.rb:62:in `columns_hash'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/model_schema.rb:441:in `load_schema!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/attributes.rb:233:in `load_schema!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/attribute_decorators.rb:28:in `load_schema!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/model_schema.rb:436:in `load_schema'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activerecord-5.0.1/lib/active_record/model_schema.rb:344:in `columns'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator/fields_builder.rb:7:in `general_fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator.rb:57:in `general_fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator.rb:4:in `fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/adaptors/wallaby/active_record/model_decorator.rb:18:in `form_fields'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/lib/decorators/wallaby/resource_decorator.rb:20:in `form_fields'
/Users/fuzzyri/git/stockland_api/app/decorators/admin_decorator.rb:35:in `<class:AdminDecorator>'
/Users/fuzzyri/git/stockland_api/app/decorators/admin_decorator.rb:1:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `block in load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:662:in `new_constants_in'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:476:in `load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:375:in `block in require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/concurrency/share_lock.rb:150:in `exclusive'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:11:in `loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:358:in `require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:511:in `load_missing_constant'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:203:in `const_missing'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:268:in `const_get'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:268:in `block in constantize'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `each'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `inject'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/inflector/methods.rb:266:in `constantize'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/core_ext/string/inflections.rb:66:in `constantize'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:16:in `block in preload'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:13:in `each'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:13:in `preload'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/app/routes/wallaby/resources_router.rb:24:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:477:in `block in load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:662:in `new_constants_in'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:476:in `load_file'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:375:in `block in require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `block in load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/concurrency/share_lock.rb:150:in `exclusive'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies/interlock.rb:11:in `loading'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:37:in `load_interlock'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:358:in `require_or_load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:511:in `load_missing_constant'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:203:in `const_missing'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/config/routes.rb:7:in `block (2 levels) in <top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/mapper.rb:855:in `scope'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/config/routes.rb:6:in `block in <top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in `instance_exec'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:389:in `eval_block'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/actionpack-5.0.1/lib/action_dispatch/routing/route_set.rb:371:in `draw'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/wallaby-5.0.0/config/routes.rb:1:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `block in load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:287:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `each'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:16:in `reload!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/file_update_checker.rb:77:in `execute'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:27:in `updater'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application/finisher.rb:119:in `block in <module:Finisher>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `instance_exec'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:30:in `run'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/initializable.rb:54:in `run_initializers'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application.rb:352:in `initialize!'
/Users/fuzzyri/git/stockland_api/config/environment.rb:5:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `block in require'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application.rb:328:in `require_environment!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/application.rb:448:in `block in run_tasks_blocks'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/bugsnag-5.0.1/lib/bugsnag/rake.rb:12:in `execute_with_bugsnag'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands/rake_proxy.rb:14:in `block in run_rake_task'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands/rake_proxy.rb:11:in `run_rake_task'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:51:in `run_command!'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
/Users/fuzzyri/git/stockland_api/bin/rails:9:in `require'
/Users/fuzzyri/git/stockland_api/bin/rails:9:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in `call'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client/command.rb:7:in `call'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/client.rb:30:in `run'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/bin/spring:49:in `<top (required)>'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/binstub.rb:31:in `load'
/Users/fuzzyri/.rvm/gems/ruby-2.3.3@geni/gems/spring-2.0.1/lib/spring/binstub.rb:31:in `<top (required)>'
/Users/fuzzyri/git/stockland_api/bin/spring:14:in `require'
/Users/fuzzyri/git/stockland_api/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

Conflict with closure_tree

I'm seeing this in our development log:

WALLABY DEBUG: Reloading after Rails' reload...
/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/closure_tree-7.1.0/lib/closure_tree/support.rb:36: warning: already initialized constant ObjectiveHierarchy
/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/closure_tree-7.1.0/lib/closure_tree/support.rb:36: warning: previous definition of ObjectiveHierarchy was here
/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/closure_tree-7.1.0/lib/closure_tree/support.rb:36: warning: already initialized constant OrgNodeHierarchy
/Users/rbates/.rbenv/versions/2.5.5/lib/ruby/gems/2.5.0/gems/closure_tree-7.1.0/lib/closure_tree/support.rb:36: warning: previous definition of OrgNodeHierarchy was here

It appears Wallaby is loading these classes which closure_tree doesn't expect. I tried adding the classes to Wallaby's exclude config but I still see these warnings. Can you make it so excluding models makes it so Wallaby doesn't attempt to require them?

Unknown enum attribute

Rails 7.1 introduced a change which requires an attribute exists when specifying enum in a model. Otherwise it raises Unknown enum attribute error. This means it's important that migrations don't load the model when they run, otherwise it will raise this error and you won't be able to generate the column to resolve it.

This normally isn't an issue but Wallaby loads models before migrations are run. Is there a way to bypass Wallaby eager loading when running migrations?

Actually might be nice to bypass the custom loading behavior for all cases because it seems to be a common source of issues. If the reason Wallaby eager loads models is so it knows which models exist, I'd much prefer manually managing a list of models for Wallaby so we can use Rails normal loading logic.

Update: Another issue with preloading is when setting up the app on a new machine, the rails db:create command doesn't work since Wallaby tries to load the models which depends on the database existing. It's not hard to create it outside of this command, just another hiccup.

@tian-im

Default theme isn't used

Wallaby appears to be using the layout defined in the main ::ApplicationController by default. I had to add this to our wallaby ApplicationController to get it to use the default theme.

self.theme_name = "wallaby/resources"

Shouldn't this theme be used by default and override the layout defined in ::ApplicationController? It might also be nice to add information on the default them to the themes docs.

Changing code falls back to ApplicationDecorator

I'm getting strange behavior after changing code and reloading the page. Sometimes the code changes don't take effect, but other times it loses reference to the custom decorators and templates.

I've been able to duplicate this on the demo app after upgrading to Wallaby 6. Updating a decorator's code and reloading the page seems to cause all decorators to reference ApplicationDecorator. Also custom templates like views/products/edit.html.erb no longer render instead fall back to their default templates.

Restarting the app fixes the problem until the code changes again.

When installing into an app that uses services or concerns, app fails to start

When trying to boot with classes within app/controllers/concerns or app/models/concerns or app/services Wallaby fails to start with:

/Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:495:in `load_missing_constant': Unable to autoload constant GenerateEnrollmentsCsvService, expected /Users/mikel/Code/enlight/app/services/generate_enrollments_csv_service.rb to define it (LoadError)
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:184:in `const_missing'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/inflector/methods.rb:261:in `const_get'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/inflector/methods.rb:261:in `block in constantize'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/inflector/methods.rb:259:in `each'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/inflector/methods.rb:259:in `inject'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/inflector/methods.rb:259:in `constantize'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/activesupport-4.2.6/lib/active_support/core_ext/string/inflections.rb:66:in `constantize'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/wallaby-4.0.1/app/routes/wallaby/resources_router.rb:13:in `block in <top (required)>'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/wallaby-4.0.1/app/routes/wallaby/resources_router.rb:11:in `each'
    from /Users/mikel/.rvm/gems/ruby-2.1.6@enlight/gems/wallaby-4.0.1/app/routes/wallaby/resources_router.rb:11:in `<top (required)>'

Changing the service from:

class GenerateEnrollmentsCSVService
end

to

module Service
  class GenerateEnrollmentsCSVService
  end
end

Does fix it, but you have to set this everywhere in the app. Wallaby should be able to handle these classes on usual Rails paths without further modification like the rest of Rails can.

Support Webpack

We are moving all our app assets to Webpack(er) which means we only need Sprockets for Wallaby. It would be nice if Wallaby did not depend on Sprockets to reduce our app dependencies.

What about creating a node module for wallaby that we can require into our project which would include the JS dependencies and assets. Then add a config option for using webpack instead of sprockets.

Maybe move the sprockets portion into a wallaby-sprockets gem that one can use if they want the assets through sprockets.

What do you think?

Nav menu breaks for custom routes

I have a custom route to add a custom action like this:

resources :accounts do
  member do
    get :extend_trial
  end
end

This causes the Data menu to disappear when visiting the account pages because it loses reference to current_engine.

I tried specifying the engine_name in the controller:

self.engine_name = "wallaby_engine"

However this causes another error:

ActionController::UrlGenerationError - No route matches {:action=>"index", :controller=>"support_admin/accounts", :sort=>"id asc"}, missing required keys: [:resources]

Not certain how to proceed from here.

Uninitialized constant CanCan

It appears cancancan was removed as a gem dependency however app/security/ability.rb in wallaby-core still references it. This results in the error: uninitialized constant CanCan (NameError) when the file is loaded.

You may only see this error when eager loading is enabled in the Rails app environment config.

Data dropdown menu goes out of view

When the "Data" dropdown menu has too many items in it, it goes off the bottom of the page and there's no way to scroll down to access the items at the bottom.

Incompatibility with PaperTrail

I have a model which has_paper_trail using the paper_trail gem. When visiting the show action of this model it attempts to render the internal has_many :versions association that PaperTrail sets up and results in this error:

NoMethodError - undefined method `to_label' for #<PaperTrail::Version:0x00007f8ca4983338>
Did you mean?  to_global_id

This is a rather confusing error message. The logs show this:

[WALLABY] Don't know how to handle this model PaperTrail::Version.

Perhaps raise an error on this which is more informative. Also maybe some information on how to resolve the problem.

I first tried adding it to config.models.exclude but that didn't seem to remove the error.

I then added it to config.custom_models which appears to have worked. However the Versions section attempts to link to that version and a link to create versions. Maybe disable the link if it's an excluded model?

Support for Devise >= v4

Hey @tian-im. Was hoping to use this gem in a project, but cannot because of a Devise compatibility (I am using Devise 4+). Any chance there is an easy work around?

sorting only work once

Hi, @tian-im
sorting is not properly work
suppose i have column in table name and email when i first sort name its work fine but after that if i try to sort any other column in table its not working

I want to feature like one column sort at a time

Gem dependencies

I was able to initialize it on Rails 6 with next gems:

gem 'wallaby', github: 'wallaby-rails/wallaby'
gem 'wallaby-core', github: 'wallaby-rails/wallaby-core'
gem 'wallaby-active_record', github: 'wallaby-rails/wallaby-active_record'
gem 'kaminari'
gem 'wallaby-her', github: 'wallaby-rails/wallaby-her'
gem 'codemirror-rails', github: 'fixlr/codemirror-rails', branch: 'updates'

Shouldn't kaminari be added as dependency to gemspec? Also it currently requires wallaby-her.

Unable to autoload constant Concerns

I am seeing a lot of these lines in the development log when making changes to our app and loading a page:

[WALLABY] Preload warning: Unable to autoload constant Concerns::Importable ...

Where Importable is the name of a concern. It does this for every concern module defined in the app.

Also changes made to any wallaby subclass does not seem to take effect. I think it may be related to this.

I haven't had time to dive into this further so perhaps this is an issue with our app config and would happen with any engine. I'll comment on this if I find out more.

Wallaby version: 6.1.0
Rails version: 5.2.4.1

Object is not decorated error in Rails 7.0.3

I'm seeing this error when rendering a custom form action since upgrading to Rails 7.0.3. It works in Rails 7.0.2.4.

1.1) Failure/Error: <%= type_render decorated.form_type_of("trial_end_date"), field_name: "trial_end_date", form: form %>
    
    ActionView::Template::Error:
      Object is not decorated.
    # ./app/views/support_admin/accounts/extend_trial.html.erb:20:in `block in _app_views_support_admin_accounts_extend_trial_html_erb___2158087891327239296_1753240'
    # ./app/views/support_admin/accounts/extend_trial.html.erb:12:in `_app_views_support_admin_accounts_extend_trial_html_erb___2158087891327239296_1753240'
    # ./app/controllers/support_admin/accounts_controller.rb:3:in `extend_trial'
    # ./app/controllers/concerns/slow_request_concern.rb:14:in `notify_slow_requests'
    # ./app/controllers/application_controller.rb:82:in `set_time_zone!'
    # ------------------
    # --- Caused by: ---
    # ArgumentError:
    #   Object is not decorated.
    #   ./app/views/support_admin/accounts/extend_trial.html.erb:20:in `block in _app_views_support_admin_accounts_extend_trial_html_erb___2158087891327239296_1753240'

I'm uncertain why it says object is not decorated when it has decorated = decorate resource at the top of the template. Any ideas? Have you noticed this error in the latest version of Rails?

Wallaby config classes conflict with autoloading

I received this deprecation warning after upgrading to Rails 6.

DEPRECATION WARNING: Initialization autoloaded the constants SupportAdmin, ApplicationHelper, ...

Being able to do this is deprecated. Autoloading during initialization is going
to be an error condition in future versions of Rails.

Reloading does not reboot the application, and therefore code executed during
initialization does not run again. So, if you reload SupportAdmin, for example,
the expected changes won't be reflected in that stale Module object.

`config.autoloader` is set to `classic`. These autoloaded constants would have been unloaded if `config.autoloader` had been set to `:zeitwerk`.

Please, check the "Autoloading and Reloading Constants" guide for solutions.
 (called from <top (required)> at /Users/rbates/code/envisage/config/environment.rb:5)

In my config I have:

# in config/initializers/wallaby.rb
Wallaby.config do |config|
  config.models.exclude [
    Ckeditor::Asset,
    Ckeditor::AttachmentFile,
    Ckeditor::Picture,
    PaperTrail::Version
  ]

  config.mapping.resources_controller = SupportAdmin::ApplicationController
  config.mapping.resource_decorator = SupportAdmin::ApplicationDecorator
  config.mapping.model_servicer = SupportAdmin::ApplicationServicer
  config.mapping.model_authorizer = SupportAdmin::ApplicationAuthorizer
  # ...
end

The issue is these classes are in the autoload path and initializers should not reference classes which are autoloaded. This causes issues when the class is reloaded later since it loses reference to it.

I suggest always using strings to configure classes:

Wallaby.config do |config|
  config.models.exclude %w[
    Ckeditor::Asset,
    Ckeditor::AttachmentFile,
    Ckeditor::Picture,
    PaperTrail::Version
  ]

  config.mapping.resources_controller = "SupportAdmin::ApplicationController"
  config.mapping.resource_decorator = "SupportAdmin::ApplicationDecorator"
  config.mapping.model_servicer = "SupportAdmin::ApplicationServicer"
  config.mapping.model_authorizer = "SupportAdmin::ApplicationAuthorizer"
  # ...
end

And then only constantize them at the last moment when they need to be loaded. It appears this works for the models config but not for the others.

Update: actually strings for model classes aren't working for me either. I get a wrong constant name error.

Specify Bootstrap v4

Is Wallaby compatible with Bootstrap 5? I got this error after running bundle update wallaby-view.

SassC::SyntaxError - Error: Undefined variable: "$emphasized-link-hover-darken-percentage".
        on line 131:7 of ../../.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.3/app/assets/stylesheets/wallaby/base/_mixins.scss, in mixin `text-emphasis-variant`
        from line 4:10 of ../../.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.3/app/assets/stylesheets/wallaby/components/_text.scss
        from line 16:9 of ../../.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/wallaby-6.1.3/app/assets/stylesheets/wallaby/base.scss
        from line 2:9 of app/assets/stylesheets/wallaby/application.scss
>>   @if $emphasized-link-hover-darken-percentage != 0 {

I assume this is because the bootstrap gem updated to v5 when I updated wallaby. You might want to constrain wallaby to bootstrap v4.

cc @tian-im

Add context to default authorization provider

The DefaultAuthorizationProvider.args_from method returns an empty hash so it doesn't track any args. It would be nice if it passed the context so we have access to that in the app's ApplicationAuthorizer.

Currently what I'm doing is inheriting from DefaultAuthorizationProvider with a custom provider class that tracks the user.

Unable to run `rails db:create`

I attempted to run rails db:create on the demo app and it failed with the following:

ActiveRecord::NoDatabaseError: FATAL:  database "wallaby_demo_development" does not exist
/Users/rbates/code/gh/wallaby_demo/app/decorators/product_decorator.rb:2:in `<class:ProductDecorator>'
/Users/rbates/code/gh/wallaby_demo/app/decorators/product_decorator.rb:1:in `<top (required)>'
/Users/rbates/code/gh/wallaby_demo/config/environment.rb:5:in `<top (required)>'

I believe this is because decorators depend on the database existing before the class will load. Perhaps check if the database exists before attempting to use it.

Bootstrap 4

I started using this then realised when creating templates it's using Bootstrap 3 and FontAwesome 4.

Are you open to upgrading these as they've been GA for >6 months now?

Conflict with current_user method

It appears the current_user method is being overridden in Wallaby::SecureController.

This can conflict with the existing current_user method defined in the app. For example, we have current_user and current_admin_user and we want to use the latter for Wallaby. The issue is the current_user method within Wallaby controller subclasses returns an AdminUser instance instead of a normal User.

This causes confusion and everything in our main ApplicationController needs to check which type of user is being returned by current_user.

I suggest renaming current_user to wallaby_current_user and use that in Wallaby internals.

Turbolinks config doesn't flush sprockets cache

The readyPrefix function in setup.js.erb is dynamically generated depending on the turbolinks config. Unfortunately sprockets seems to cache this file and doesn't flush it until the file contents change. This means toggling the config will not update the asset cache.

Perhaps remove the dynamic generation in favor of detecting Turbolinks through JS.

Ruby 3.0+ support

I'm looking into upgrading to Ruby 3.0 from Ruby 2.7.8 and am seeing deprecation warnings.

DEPRECATION WARNING: /Users/rbates/.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/wallaby-6.1.5/app/views/wallaby/resources/_index_query.html.erb:4: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
DEPRECATION WARNING: /Users/rbates/.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.7/lib/authorizers/wallaby/model_authorizer.rb:73: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
DEPRECATION WARNING: /Users/rbates/.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.7/lib/helpers/wallaby/base_helper.rb:59: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
DEPRECATION WARNING: /Users/rbates/.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.7/lib/utils/wallaby/locale.rb:18: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
DEPRECATION WARNING: /Users/rbates/.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/wallaby-core-0.2.7/lib/interfaces/wallaby/model_authorization_provider.rb:41: warning: The called method `initialize' is defined here /Users/rbates/.rbenv/versions/2.7.8/lib/ruby/gems/2.7.0/gems/wallaby-6.1.5/app/views/wallaby/resources/_index_query.html.erb:4: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call                  

There may be more.

@tian-im any chance to get this fixed?

Decorator not set in Rails 7.1.2

I have an accounts/_resource_actions.html.erb partial where I reference decorated and it's returning an instance of ApplicationDecorator instead of the AccountDecorator like it did in Rails 7.1.1. Perhaps something changed with how loading works?

Failure/Error: <% if decorated.intercom_url.present? %>
          
          ActionView::Template::Error:
            undefined method `intercom_url' for #<SupportAdmin::ApplicationDecorator:0x0000000112e99950...

Any ideas @tian-im?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.