diff --git a/.rubocop.yml b/.rubocop.yml index 74b45768d..43f27ddf4 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,6 +8,9 @@ AllCops: - 'db/schema.rb' - 'vendor/**/*' +Rails: + Enabled: true + Style/FileName: Exclude: - 'Gemfile' @@ -66,3 +69,10 @@ Style/Documentation: Style/FrozenStringLiteralComment: Enabled: false + +# Configuration parameters: Include. +# Include: app/**/*.rb, config/**/*.rb, db/**/*.rb, lib/**/*.rb +Rails/Output: + Exclude: + - 'config/unicorn.rb' + - 'db/seeds.rb' \ No newline at end of file diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 2fdd20f71..69c0c397d 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -69,28 +69,6 @@ Lint/UnusedMethodArgument: - 'app/validators/approved_validator.rb' - 'spec/views/plantings/show.html.haml_spec.rb' -# Offense count: 52 -Lint/UselessAssignment: - Exclude: - - 'app/controllers/crops_controller.rb' - - 'app/models/crop.rb' - - 'app/models/member.rb' - - 'config.rb' - - 'config/compass.rb' - - 'config/setup_load_paths.rb' - - 'db/seeds.rb' - - 'lib/tasks/growstuff.rake' - - 'spec/controllers/admin/orders_controller_spec.rb' - - 'spec/features/signin_spec.rb' - - 'spec/features/unsubscribing_spec.rb' - - 'spec/helpers/gardens_helper_spec.rb' - - 'spec/helpers/notifications_helper_spec.rb' - - 'spec/helpers/seeds_helper_spec.rb' - - 'spec/models/crop_spec.rb' - - 'spec/models/garden_spec.rb' - - 'spec/models/member_spec.rb' - - 'spec/support/controller_macros.rb' - # Offense count: 5 Lint/Void: Exclude: @@ -108,33 +86,6 @@ Performance/StringReplacement: - 'app/models/seed.rb' - 'spec/rails_helper.rb' -# Offense count: 21 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles, Include. -# SupportedStyles: action, filter -# Include: app/controllers/**/*.rb -Rails/ActionFilter: - Exclude: - - 'app/controllers/account_types_controller.rb' - - 'app/controllers/accounts_controller.rb' - - 'app/controllers/alternate_names_controller.rb' - - 'app/controllers/application_controller.rb' - - 'app/controllers/authentications_controller.rb' - - 'app/controllers/comments_controller.rb' - - 'app/controllers/crops_controller.rb' - - 'app/controllers/follows_controller.rb' - - 'app/controllers/gardens_controller.rb' - - 'app/controllers/harvests_controller.rb' - - 'app/controllers/notifications_controller.rb' - - 'app/controllers/order_items_controller.rb' - - 'app/controllers/orders_controller.rb' - - 'app/controllers/plantings_controller.rb' - - 'app/controllers/posts_controller.rb' - - 'app/controllers/products_controller.rb' - - 'app/controllers/roles_controller.rb' - - 'app/controllers/scientific_names_controller.rb' - - 'app/controllers/seeds_controller.rb' - # Offense count: 10 # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: strict, flexible @@ -149,39 +100,6 @@ Rails/Date: - 'spec/features/plantings/planting_a_crop_spec.rb' - 'spec/features/shared_examples/append_date.rb' -# Offense count: 42 -# Cop supports --auto-correct. -# Configuration parameters: Whitelist. -# Whitelist: find_by_sql -Rails/DynamicFindBy: - Exclude: - - 'app/controllers/alternate_names_controller.rb' - - 'app/controllers/comments_controller.rb' - - 'app/controllers/gardens_controller.rb' - - 'app/controllers/harvests_controller.rb' - - 'app/controllers/notifications_controller.rb' - - 'app/controllers/plantings_controller.rb' - - 'app/controllers/posts_controller.rb' - - 'app/controllers/scientific_names_controller.rb' - - 'app/controllers/seeds_controller.rb' - - 'app/models/crop.rb' - - 'app/models/member.rb' - - 'app/models/order.rb' - - 'db/seeds.rb' - - 'lib/tasks/growstuff.rake' - - 'spec/controllers/roles_controller_spec.rb' - - 'spec/models/crop_spec.rb' - - 'spec/models/scientific_name_spec.rb' - -# Offense count: 7 -# Cop supports --auto-correct. -# Configuration parameters: Include. -# Include: app/models/**/*.rb -Rails/FindBy: - Exclude: - - 'app/models/member.rb' - - 'app/models/post.rb' - # Offense count: 11 # Configuration parameters: Include. # Include: app/models/**/*.rb @@ -197,36 +115,6 @@ Rails/HasAndBelongsToMany: - 'app/models/product.rb' - 'app/models/role.rb' -# Offense count: 89 -# Cop supports --auto-correct. -# Configuration parameters: Include. -# Include: spec/**/*, test/**/* -Rails/HttpPositionalArguments: - Exclude: - - 'spec/controllers/admin/orders_controller_spec.rb' - - 'spec/controllers/comments_controller_spec.rb' - - 'spec/controllers/crops_controller_spec.rb' - - 'spec/controllers/harvests_controller_spec.rb' - - 'spec/controllers/member_controller_spec.rb' - - 'spec/controllers/notifications_controller_spec.rb' - - 'spec/controllers/order_items_controller_spec.rb' - - 'spec/controllers/orders_controller_spec.rb' - - 'spec/controllers/places_controller_spec.rb' - - 'spec/controllers/plantings_controller_spec.rb' - - 'spec/controllers/posts_controller_spec.rb' - - 'spec/controllers/roles_controller_spec.rb' - - 'spec/controllers/scientific_names_controller_spec.rb' - - 'spec/controllers/seeds_controller_spec.rb' - - 'spec/controllers/shop_controller_spec.rb' - -# Offense count: 15 -# Configuration parameters: Include. -# Include: app/**/*.rb, config/**/*.rb, db/**/*.rb, lib/**/*.rb -Rails/Output: - Exclude: - - 'config/unicorn.rb' - - 'db/seeds.rb' - # Offense count: 3 Rails/OutputSafety: Exclude: @@ -234,21 +122,6 @@ Rails/OutputSafety: - 'app/helpers/auto_suggest_helper.rb' - 'app/helpers/gardens_helper.rb' -# Offense count: 2 -# Cop supports --auto-correct. -Rails/PluralizationGrammar: - Exclude: - - 'spec/features/plantings/planting_a_crop_spec.rb' - - 'spec/models/member_spec.rb' - -# Offense count: 1 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: referer, referrer -Rails/RequestReferer: - Exclude: - - 'app/controllers/application_controller.rb' - # Offense count: 9 # Configuration parameters: EnforcedStyle, SupportedStyles. # SupportedStyles: strict, flexible @@ -402,188 +275,6 @@ Style/DefWithParentheses: Exclude: - 'spec/views/posts/_single.html.haml_spec.rb' -# Offense count: 178 -Style/Documentation: - Exclude: - - 'spec/**/*' - - 'test/**/*' - - 'app/controllers/account_types_controller.rb' - - 'app/controllers/accounts_controller.rb' - - 'app/controllers/admin/orders_controller.rb' - - 'app/controllers/admin_controller.rb' - - 'app/controllers/alternate_names_controller.rb' - - 'app/controllers/application_controller.rb' - - 'app/controllers/authentications_controller.rb' - - 'app/controllers/comments_controller.rb' - - 'app/controllers/crops_controller.rb' - - 'app/controllers/follows_controller.rb' - - 'app/controllers/forums_controller.rb' - - 'app/controllers/gardens_controller.rb' - - 'app/controllers/harvests_controller.rb' - - 'app/controllers/home_controller.rb' - - 'app/controllers/members_controller.rb' - - 'app/controllers/notifications_controller.rb' - - 'app/controllers/order_items_controller.rb' - - 'app/controllers/orders_controller.rb' - - 'app/controllers/pages_controller.rb' - - 'app/controllers/passwords_controller.rb' - - 'app/controllers/photos_controller.rb' - - 'app/controllers/places_controller.rb' - - 'app/controllers/plant_parts_controller.rb' - - 'app/controllers/plantings_controller.rb' - - 'app/controllers/posts_controller.rb' - - 'app/controllers/products_controller.rb' - - 'app/controllers/registrations_controller.rb' - - 'app/controllers/robots_controller.rb' - - 'app/controllers/roles_controller.rb' - - 'app/controllers/scientific_names_controller.rb' - - 'app/controllers/seeds_controller.rb' - - 'app/controllers/sessions_controller.rb' - - 'app/controllers/shop_controller.rb' - - 'app/helpers/application_helper.rb' - - 'app/helpers/auto_suggest_helper.rb' - - 'app/helpers/crops_helper.rb' - - 'app/helpers/gardens_helper.rb' - - 'app/helpers/harvests_helper.rb' - - 'app/helpers/notifications_helper.rb' - - 'app/helpers/plantings_helper.rb' - - 'app/helpers/seeds_helper.rb' - - 'app/mailers/notifier.rb' - - 'app/models/ability.rb' - - 'app/models/account.rb' - - 'app/models/account_type.rb' - - 'app/models/alternate_name.rb' - - 'app/models/authentication.rb' - - 'app/models/comment.rb' - - 'app/models/crop.rb' - - 'app/models/follow.rb' - - 'app/models/forum.rb' - - 'app/models/garden.rb' - - 'app/models/harvest.rb' - - 'app/models/member.rb' - - 'app/models/notification.rb' - - 'app/models/order.rb' - - 'app/models/order_item.rb' - - 'app/models/photo.rb' - - 'app/models/plant_part.rb' - - 'app/models/planting.rb' - - 'app/models/post.rb' - - 'app/models/product.rb' - - 'app/models/role.rb' - - 'app/models/scientific_name.rb' - - 'app/models/seed.rb' - - 'app/validators/approved_validator.rb' - - 'config/application.rb' - - 'config/initializers/comfortable_mexican_sofa.rb' - - 'db/migrate/20120903092956_devise_create_users.rb' - - 'db/migrate/20120903112806_add_username_to_users.rb' - - 'db/migrate/20121001212604_create_crops.rb' - - 'db/migrate/20121003190731_require_system_name_for_crops.rb' - - 'db/migrate/20121027035231_add_slug_to_crops.rb' - - 'db/migrate/20121105032913_create_gardens.rb' - - 'db/migrate/20121106101718_add_slug_to_users.rb' - - 'db/migrate/20121107012827_create_scientific_names.rb' - - 'db/migrate/20121108105440_create_updates.rb' - - 'db/migrate/20121109130033_add_creation_index_to_updates.rb' - - 'db/migrate/20121203034745_add_tos_agreement_to_users.rb' - - 'db/migrate/20121214224227_add_slug_to_updates.rb' - - 'db/migrate/20121219022554_create_plantings.rb' - - 'db/migrate/20130113045802_rename_updates_to_posts.rb' - - 'db/migrate/20130113060852_rename_users_to_members.rb' - - 'db/migrate/20130113081521_rename_post_member_to_author.rb' - - 'db/migrate/20130113095802_rename_garden_member_to_owner.rb' - - 'db/migrate/20130118031942_add_description_to_gardens.rb' - - 'db/migrate/20130118043431_add_slug_to_plantings.rb' - - 'db/migrate/20130206033956_create_comments.rb' - - 'db/migrate/20130206051328_add_show_email_to_member.rb' - - 'db/migrate/20130208034248_require_fields_for_comments.rb' - - 'db/migrate/20130212001748_add_geo_to_members.rb' - - 'db/migrate/20130212123628_create_notifications.rb' - - 'db/migrate/20130213014511_create_forums.rb' - - 'db/migrate/20130213015708_add_forum_to_posts.rb' - - 'db/migrate/20130214024117_create_roles.rb' - - 'db/migrate/20130214034838_add_members_roles_table.rb' - - 'db/migrate/20130215131921_rename_notification_fields.rb' - - 'db/migrate/20130220044605_add_slug_to_forums.rb' - - 'db/migrate/20130220044642_add_slug_to_roles.rb' - - 'db/migrate/20130222060730_default_read_to_false.rb' - - 'db/migrate/20130326092227_change_planted_at_to_date.rb' - - 'db/migrate/20130327120024_add_send_email_to_member.rb' - - 'db/migrate/20130329045744_add_sunniness_to_planting.rb' - - 'db/migrate/20130404174459_create_authentications.rb' - - 'db/migrate/20130409103549_make_post_subject_non_null.rb' - - 'db/migrate/20130409162140_add_name_to_authentications.rb' - - 'db/migrate/20130507105357_create_products.rb' - - 'db/migrate/20130507110411_create_orders.rb' - - 'db/migrate/20130507113915_add_orders_products_table.rb' - - 'db/migrate/20130508050711_add_completed_to_order.rb' - - 'db/migrate/20130508104506_create_photos.rb' - - 'db/migrate/20130509123711_add_metadata_to_photos.rb' - - 'db/migrate/20130514124515_add_parent_to_crop.rb' - - 'db/migrate/20130515033842_create_order_items.rb' - - 'db/migrate/20130515054017_change_order_member_id_to_integer.rb' - - 'db/migrate/20130515122301_change_prices_to_integers.rb' - - 'db/migrate/20130517015920_create_account_details.rb' - - 'db/migrate/20130517051922_create_account_types.rb' - - 'db/migrate/20130517234458_require_account_type_name.rb' - - 'db/migrate/20130518000339_add_columns_to_product.rb' - - 'db/migrate/20130518002942_rename_account_detail_to_account.rb' - - 'db/migrate/20130529032813_add_express_token_to_orders.rb' - - 'db/migrate/20130531110729_add_photos_plantings_table.rb' - - 'db/migrate/20130601011725_change_flickr_photo_id_to_string.rb' - - 'db/migrate/20130606230333_change_product_description_to_text.rb' - - 'db/migrate/20130606233733_add_recommended_price_to_product.rb' - - 'db/migrate/20130705104238_add_planted_from_to_planting.rb' - - 'db/migrate/20130715110134_create_seeds.rb' - - 'db/migrate/20130718005600_change_use_by_to_plant_before_on_seed.rb' - - 'db/migrate/20130718011247_add_trading_to_seeds.rb' - - 'db/migrate/20130722050836_remove_tradable_from_seeds.rb' - - 'db/migrate/20130723103128_set_default_tradable_to_on_seed.rb' - - 'db/migrate/20130723110702_add_slug_to_seed.rb' - - 'db/migrate/20130809012511_add_bio_to_members.rb' - - 'db/migrate/20130819004549_add_planting_count_to_crop.rb' - - 'db/migrate/20130821011352_add_creator_to_crops.rb' - - 'db/migrate/20130821073736_add_creator_to_scientific_name.rb' - - 'db/migrate/20130826012139_add_owner_to_planting.rb' - - 'db/migrate/20130826023159_add_plantings_count_to_member.rb' - - 'db/migrate/20130827105823_add_newsletter_to_member.rb' - - 'db/migrate/20130913015118_add_referral_code_to_order.rb' - - 'db/migrate/20130917053547_create_harvests.rb' - - 'db/migrate/20130917060257_change_harvest_notes_to_description.rb' - - 'db/migrate/20130917071545_change_harvest_units_to_unit.rb' - - 'db/migrate/20130917075803_add_slug_to_harvests.rb' - - 'db/migrate/20130925050304_add_weight_to_harvests.rb' - - 'db/migrate/20131018101204_rename_system_name_to_name.rb' - - 'db/migrate/20131025104228_add_fields_to_gardens.rb' - - 'db/migrate/20131029053113_add_plant_part_to_harvests.rb' - - 'db/migrate/20131030230908_create_plant_parts.rb' - - 'db/migrate/20131030231202_change_plant_part_to_plant_part_id.rb' - - 'db/migrate/20131031000655_add_slug_to_plant_part.rb' - - 'db/migrate/20140718075753_default_plantings_count_to_zero.rb' - - 'db/migrate/20140829230600_add_finished_to_planting.rb' - - 'db/migrate/20140905001730_add_harvests_photos_table.rb' - - 'db/migrate/20140928044231_add_crops_posts_table.rb' - - 'db/migrate/20140928085713_add_send_planting_reminder_to_member.rb' - - 'db/migrate/20141002022459_create_index_harvest_photos.rb' - - 'db/migrate/20141018111015_create_alternate_names.rb' - - 'db/migrate/20141111130849_create_follows.rb' - - 'db/migrate/20141119130555_change_follows_member_id_to_follower_id.rb' - - 'db/migrate/20150124110540_add_properties_to_seeds.rb' - - 'db/migrate/20150127043022_add_gardens_photos_table.rb' - - 'db/migrate/20150129034206_add_si_weight_to_harvest.rb' - - 'db/migrate/20150130224814_add_requester_to_crops.rb' - - 'db/migrate/20150201052245_create_cms.rb' - - 'db/migrate/20150201053200_add_approval_status_to_crops.rb' - - 'db/migrate/20150201062506_add_reason_for_rejection_to_crops.rb' - - 'db/migrate/20150201064502_add_request_notes_to_crops.rb' - - 'db/migrate/20150209105410_add_rejection_notes_to_crops.rb' - - 'db/migrate/20150625224805_add_days_before_maturity_to_plantings.rb' - - 'db/migrate/20150824145414_add_member_preferred_image.rb' - - 'lib/actions/oauth_signup_action.rb' - - 'lib/geocodable.rb' - - 'lib/haml/filters/escaped_markdown.rb' - - 'lib/haml/filters/growstuff_markdown.rb' - # Offense count: 10 # Cop supports --auto-correct. Style/EachForSimpleLoop: diff --git a/app/controllers/account_types_controller.rb b/app/controllers/account_types_controller.rb index 073933af4..fce71380a 100644 --- a/app/controllers/account_types_controller.rb +++ b/app/controllers/account_types_controller.rb @@ -1,5 +1,5 @@ class AccountTypesController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /account_types diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index b2daf95ed..bca64597a 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -1,5 +1,5 @@ class AccountsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /accounts diff --git a/app/controllers/alternate_names_controller.rb b/app/controllers/alternate_names_controller.rb index bfcbb2a4f..b8467bb34 100644 --- a/app/controllers/alternate_names_controller.rb +++ b/app/controllers/alternate_names_controller.rb @@ -1,5 +1,5 @@ class AlternateNamesController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /alternate_names @@ -17,7 +17,7 @@ class AlternateNamesController < ApplicationController # GET /alternate_names/new.json def new @alternate_name = AlternateName.new - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.haml diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 45c657b64..468f767c6 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,8 +3,8 @@ class ApplicationController < ActionController::Base include ApplicationHelper - after_filter :store_location - before_filter :set_locale + after_action :store_location + before_action :set_locale def store_location if (request.path != "/members/sign_in" && @@ -23,7 +23,7 @@ class ApplicationController < ActionController::Base end def after_sign_out_path_for(resource_or_scope) - request.referrer + request.referer end # tweak CanCan defaults because we don't have a "current_user" method diff --git a/app/controllers/authentications_controller.rb b/app/controllers/authentications_controller.rb index 886715373..3567ea67f 100644 --- a/app/controllers/authentications_controller.rb +++ b/app/controllers/authentications_controller.rb @@ -1,5 +1,5 @@ class AuthenticationsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # POST /authentications diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 0f078e2dd..ef3225bfb 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -1,5 +1,5 @@ class CommentsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /comments @@ -18,7 +18,7 @@ class CommentsController < ApplicationController # GET /comments/new.json def new @comment = Comment.new - @post = Post.find_by_id(params[:post_id]) + @post = Post.find_by(id: params[:post_id]) if @post @comments = @post.comments diff --git a/app/controllers/crops_controller.rb b/app/controllers/crops_controller.rb index f357e24fb..111b0390b 100644 --- a/app/controllers/crops_controller.rb +++ b/app/controllers/crops_controller.rb @@ -1,7 +1,7 @@ require 'will_paginate/array' class CropsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :hierarchy, :search, :show] + before_action :authenticate_member!, except: [:index, :hierarchy, :search, :show] load_and_authorize_resource skip_authorize_resource only: [:hierarchy, :search] diff --git a/app/controllers/follows_controller.rb b/app/controllers/follows_controller.rb index 58a1ce795..2c4b2daab 100644 --- a/app/controllers/follows_controller.rb +++ b/app/controllers/follows_controller.rb @@ -1,5 +1,5 @@ class FollowsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource skip_load_resource only: :create diff --git a/app/controllers/gardens_controller.rb b/app/controllers/gardens_controller.rb index 5820b83d3..a83089844 100644 --- a/app/controllers/gardens_controller.rb +++ b/app/controllers/gardens_controller.rb @@ -1,12 +1,12 @@ class GardensController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /gardens # GET /gardens.json def index @gardens = Garden.paginate(page: params[:page]) - @owner = Member.find_by_slug(params[:owner]) + @owner = Member.find_by(slug: params[:owner]) if @owner @gardens = @owner.gardens.paginate(page: params[:page]) end diff --git a/app/controllers/harvests_controller.rb b/app/controllers/harvests_controller.rb index 051cb1132..aa80c21c7 100644 --- a/app/controllers/harvests_controller.rb +++ b/app/controllers/harvests_controller.rb @@ -1,12 +1,12 @@ class HarvestsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /harvests # GET /harvests.json def index - @owner = Member.find_by_slug(params[:owner]) - @crop = Crop.find_by_slug(params[:crop]) + @owner = Member.find_by(slug: params[:owner]) + @crop = Crop.find_by(slug: params[:crop]) @harvests = if @owner @owner.harvests.includes(:owner, :crop) elsif @crop @@ -32,7 +32,7 @@ class HarvestsController < ApplicationController @harvest = Harvest.new('harvested_at' => Date.today) # using find_by_id here because it returns nil, unlike find - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.erb diff --git a/app/controllers/notifications_controller.rb b/app/controllers/notifications_controller.rb index 5794a45cc..dbc70f439 100644 --- a/app/controllers/notifications_controller.rb +++ b/app/controllers/notifications_controller.rb @@ -1,6 +1,6 @@ class NotificationsController < ApplicationController include NotificationsHelper - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /notifications @@ -28,7 +28,7 @@ class NotificationsController < ApplicationController def new @notification = Notification.new - @recipient = Member.find_by_id(params[:recipient_id]) + @recipient = Member.find_by(id: params[:recipient_id]) @subject = params[:subject] || "" respond_to do |format| @@ -66,7 +66,7 @@ class NotificationsController < ApplicationController def create params[:notification][:sender_id] = current_member.id @notification = Notification.new(notification_params) - @recipient = Member.find_by_id(params[:notification][:recipient_id]) + @recipient = Member.find_by(id: params[:notification][:recipient_id]) respond_to do |format| if @notification.save diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb index 7781913d4..0eb381a89 100644 --- a/app/controllers/order_items_controller.rb +++ b/app/controllers/order_items_controller.rb @@ -1,5 +1,5 @@ class OrderItemsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # POST /order_items diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 3e0e97806..cfeda51a7 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,5 +1,5 @@ class OrdersController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /orders diff --git a/app/controllers/plantings_controller.rb b/app/controllers/plantings_controller.rb index 2c4589e40..708fc448d 100644 --- a/app/controllers/plantings_controller.rb +++ b/app/controllers/plantings_controller.rb @@ -1,12 +1,12 @@ class PlantingsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /plantings # GET /plantings.json def index - @owner = Member.find_by_slug(params[:owner]) - @crop = Crop.find_by_slug(params[:crop]) + @owner = Member.find_by(slug: params[:owner]) + @crop = Crop.find_by(slug: params[:crop]) @plantings = if @owner @owner.plantings.includes(:owner, :crop, :garden).paginate(page: params[:page]) elsif @crop @@ -44,8 +44,8 @@ class PlantingsController < ApplicationController @planting = Planting.new('planted_at' => Date.today) # using find_by_id here because it returns nil, unlike find - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new - @garden = Garden.find_by_id(params[:garden_id]) || Garden.new + @crop = Crop.find_by(id: params[:crop_id]) || Crop.new + @garden = Garden.find_by(id: params[:garden_id]) || Garden.new respond_to do |format| format.html # new.html.erb diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 48216ac87..76befd29d 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -1,12 +1,12 @@ class PostsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /posts # GET /posts.json def index - @author = Member.find_by_slug(params[:author]) + @author = Member.find_by(slug: params[:author]) @posts = if @author @author.posts.includes(:author, { comments: :author }).paginate(page: params[:page]) else @@ -39,7 +39,7 @@ class PostsController < ApplicationController # GET /posts/new.json def new @post = Post.new - @forum = Forum.find_by_id(params[:forum_id]) + @forum = Forum.find_by(id: params[:forum_id]) respond_to do |format| format.html # new.html.haml diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index be3e923dd..cb2f96e52 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,5 @@ class ProductsController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /products diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb index 82b554467..91bcf2e52 100644 --- a/app/controllers/roles_controller.rb +++ b/app/controllers/roles_controller.rb @@ -1,5 +1,5 @@ class RolesController < ApplicationController - before_filter :authenticate_member! + before_action :authenticate_member! load_and_authorize_resource # GET /roles diff --git a/app/controllers/scientific_names_controller.rb b/app/controllers/scientific_names_controller.rb index b343436e6..0fd0eccac 100644 --- a/app/controllers/scientific_names_controller.rb +++ b/app/controllers/scientific_names_controller.rb @@ -1,5 +1,5 @@ class ScientificNamesController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /scientific_names @@ -28,7 +28,7 @@ class ScientificNamesController < ApplicationController # GET /scientific_names/new.json def new @scientific_name = ScientificName.new - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.haml diff --git a/app/controllers/seeds_controller.rb b/app/controllers/seeds_controller.rb index 188855f45..01fdc7beb 100644 --- a/app/controllers/seeds_controller.rb +++ b/app/controllers/seeds_controller.rb @@ -1,12 +1,12 @@ class SeedsController < ApplicationController - before_filter :authenticate_member!, except: [:index, :show] + before_action :authenticate_member!, except: [:index, :show] load_and_authorize_resource # GET /seeds # GET /seeds.json def index - @owner = Member.find_by_slug(params[:owner]) - @crop = Crop.find_by_slug(params[:crop]) + @owner = Member.find_by(slug: params[:owner]) + @crop = Crop.find_by(slug: params[:crop]) @seeds = if @owner @owner.seeds.includes(:owner, :crop).paginate(page: params[:page]) elsif @crop @@ -49,7 +49,7 @@ class SeedsController < ApplicationController @seed = Seed.new # using find_by_id here because it returns nil, unlike find - @crop = Crop.find_by_id(params[:crop_id]) || Crop.new + @crop = Crop.find_or_initialize_by(id: params[:crop_id]) respond_to do |format| format.html # new.html.erb diff --git a/app/models/crop.rb b/app/models/crop.rb index 71fd2205d..f803cfecf 100644 --- a/app/models/crop.rb +++ b/app/models/crop.rb @@ -227,7 +227,7 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength def Crop.create_from_csv(row) name, en_wikipedia_url, parent, scientific_names, alternate_names = row - cropbot = Member.find_by_login_name('cropbot') + cropbot = Member.find_by(login_name: 'cropbot') raise "cropbot account not found: run rake db:seed" unless cropbot crop = Crop.find_or_create_by(name: name) @@ -237,7 +237,7 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength ) if parent - parent = Crop.find_by_name(parent) + parent = Crop.find_by(name: parent) if parent crop.update_attributes(parent_id: parent.id) else @@ -259,7 +259,7 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength logger.warn("Warning: no scientific name (not even on parent crop) for #{self}") end - cropbot = Member.find_by_login_name('cropbot') + cropbot = Member.find_by(login_name: 'cropbot') if names_to_add.size > 0 raise "cropbot account not found: run rake db:seed" unless cropbot @@ -269,9 +269,7 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength end def add_alternate_names_from_csv(alternate_names) - cropbot = Member.find_by_login_name('cropbot') - - names_to_add = [] + cropbot = Member.find_by(login_name: 'cropbot') if !alternate_names.blank? # i.e. we actually passed something in, which isn't a given raise "cropbot account not found: run rake db:seed" unless cropbot @@ -322,7 +320,7 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength # we want to make sure that exact matches come first, even if not # using elasticsearch (eg. in development) - exact_match = Crop.approved.find_by_name(query) + exact_match = Crop.approved.find_by(name: query) if exact_match matches.delete(exact_match) matches.unshift(exact_match) @@ -332,6 +330,10 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength end end + def Crop.case_insensitive_name(name) + where(["lower(name) = :value", { value: name.downcase }]) + end + private def add_names_to_list(names_to_add, list_name) @@ -345,7 +347,7 @@ class Crop < ActiveRecord::Base # rubocop:disable Metrics/ClassLength end def create_crop_in_list(list_name, name) - cropbot = Member.find_by_login_name('cropbot') + cropbot = Member.find_by(login_name: 'cropbot') create_hash = { creator_id: "#{cropbot.id}", name: name diff --git a/app/models/member.rb b/app/models/member.rb index 018860365..d79a6994f 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -92,9 +92,9 @@ class Member < ActiveRecord::Base def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup if login = conditions.delete(:login) - where(conditions).where(["lower(login_name) = :value OR lower(email) = :value", { value: login.downcase }]).first + where(conditions).login_name_or_email(login).first else - where(conditions).first + find_by(conditions) end end @@ -107,7 +107,7 @@ class Member < ActiveRecord::Base end def current_order - orders.where(completed_at: nil).first + orders.find_by(completed_at: nil) end # when purchasing a product that gives you a paid account, this method @@ -137,7 +137,7 @@ class Member < ActiveRecord::Base end def auth(provider) - return authentications.find_by_provider(provider) + return authentications.find_by(provider: provider) end # Authenticates against Flickr and returns an object we can use for subsequent api calls @@ -159,7 +159,6 @@ class Member < ActiveRecord::Base # Returns a [[page of photos], total] pair. # Total is needed for pagination. def flickr_photos(page_num = 1, set = nil) - result = false result = if set flickr.photosets.getPhotos( photoset_id: set, @@ -197,6 +196,14 @@ class Member < ActiveRecord::Base return false end + def Member.login_name_or_email(login) + where(["lower(login_name) = :value OR lower(email) = :value", { value: login.downcase }]) + end + + def Member.case_insensitive_login_name(login) + where(["lower(login_name) = :value", { value: login.downcase }]) + end + def Member.interesting howmany = 12 # max number to find interesting_members = [] @@ -237,21 +244,21 @@ class Member < ActiveRecord::Base def newsletter_subscribe(testing = false) return true if (Rails.env.test? && !testing) gb = Gibbon::API.new - res = gb.lists.subscribe({ - id: Growstuff::Application.config.newsletter_list_id, - email: { email: email }, - merge_vars: { login_name: login_name }, - double_optin: false # they already confirmed their email with us - }) + gb.lists.subscribe({ + id: Growstuff::Application.config.newsletter_list_id, + email: { email: email }, + merge_vars: { login_name: login_name }, + double_optin: false # they already confirmed their email with us + }) end def newsletter_unsubscribe(testing = false) return true if (Rails.env.test? && !testing) gb = Gibbon::API.new - res = gb.lists.unsubscribe({ - id: Growstuff::Application.config.newsletter_list_id, - email: { email: email } - }) + gb.lists.unsubscribe({ + id: Growstuff::Application.config.newsletter_list_id, + email: { email: email } + }) end def already_following?(member) @@ -259,6 +266,6 @@ class Member < ActiveRecord::Base end def get_follow(member) - self.follows.where(followed_id: member.id).first if already_following?(member) + self.follows.find_by(followed_id: member.id) if already_following?(member) end end diff --git a/app/models/order.rb b/app/models/order.rb index 85a3c526d..b363f9b71 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -68,22 +68,22 @@ class Order < ActiveRecord::Base if args[:for] case args[:by] when "member" - member = Member.find_by_login_name(args[:for]) + member = Member.find_by(login_name: args[:for]) if member return member.orders end when "order_id" - order = Order.find_by_id(args[:for]) + order = Order.find_by(id: args[:for]) if order return [order] end when "paypal_token" - order = Order.find_by_paypal_express_token(args[:for]) + order = Order.find_by(paypal_express_token: args[:for]) if order return [order] end when "paypal_payer_id" - order = Order.find_by_paypal_express_payer_id(args[:for]) + order = Order.find_by(paypal_express_payer_id: args[:for]) if order return [order] end diff --git a/app/models/post.rb b/app/models/post.rb index ed4bcad73..bca9bb696 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -15,12 +15,12 @@ class Post < ActiveRecord::Base sender = self.author.id self.body.scan(Haml::Filters::GrowstuffMarkdown::MEMBER_REGEX) do |m| # find member case-insensitively and add to list of recipients - member = Member.where('lower(login_name) = ?', $1.downcase).first + member = Member.case_insensitive_login_name($1).first recipients << member if member && !recipients.include?(member) end self.body.scan(Haml::Filters::GrowstuffMarkdown::MEMBER_AT_REGEX) do |m| # find member case-insensitively and add to list of recipients - member = Member.where('lower(login_name) = ?', $1[1..-1].downcase).first + member = Member.case_insensitive_login_name($1[1..-1]).first recipients << member if member && !recipients.include?(member) end # don't send notifications to yourself @@ -75,7 +75,7 @@ class Post < ActiveRecord::Base # look for crops mentioned in the post. eg. [tomato](crop) self.body.scan(Haml::Filters::GrowstuffMarkdown::CROP_REGEX) do |m| # find crop case-insensitively - crop = Crop.where('lower(name) = ?', $1.downcase).first + crop = Crop.case_insensitive_name($1).first # create association self.crops << crop if crop && !self.crops.include?(crop) end diff --git a/config.rb b/config.rb index bb4bb0a7d..f816551c1 100644 --- a/config.rb +++ b/config.rb @@ -1,5 +1,5 @@ # Require any additional compass plugins here. - +# rubocop:disable Lint/UselessAssignment # Set this to the root of your project when deployed: http_path = "/" css_dir = "app/assets/stylesheets" diff --git a/config/compass.rb b/config/compass.rb index 2b22d5d7c..306cdd02c 100644 --- a/config/compass.rb +++ b/config/compass.rb @@ -1,2 +1,3 @@ # Require any additional compass plugins here. +# rubocop:disable Lint/UselessAssignment project_type = :rails diff --git a/config/setup_load_paths.rb b/config/setup_load_paths.rb index 7c6e7e133..c1a0f95fd 100644 --- a/config/setup_load_paths.rb +++ b/config/setup_load_paths.rb @@ -1,7 +1,5 @@ if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm') begin - rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME'])) - rvm_lib_path = File.join(rvm_path, 'lib') require 'rvm' RVM.use_from_path! File.dirname(File.dirname(__FILE__)) rescue LoadError diff --git a/db/seeds.rb b/db/seeds.rb index 6503cde74..467fd39f2 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -87,7 +87,7 @@ def load_test_users suburb_file.pos = 0 if suburb_file.eof? row = CSV.parse(suburb_file.readline) - suburb, country, state, latitude, longitude = row[0] + suburb, _country, _state, latitude, longitude = row[0] # Using 'update_column' method instead of 'update' so that # it avoids accessing Geocoding service for faster processing @user.gardens.first.update_columns(location: suburb, latitude: latitude, longitude: longitude) @@ -141,7 +141,7 @@ def create_cropbot @cropbot_user.skip_confirmation! @cropbot_user.roles << @wrangler @cropbot_user.save! - @cropbot_user.account.account_type = AccountType.find_by_name("Staff") + @cropbot_user.account.account_type = AccountType.find_by(name: "Staff") @cropbot_user.account.save end diff --git a/lib/haml/filters/growstuff_markdown.rb b/lib/haml/filters/growstuff_markdown.rb index ebd3ecebe..28e6b2543 100644 --- a/lib/haml/filters/growstuff_markdown.rb +++ b/lib/haml/filters/growstuff_markdown.rb @@ -26,7 +26,7 @@ module Haml::Filters expanded = expanded.gsub(MEMBER_REGEX) do |m| member_str = $1 # find member case-insensitively - member = Member.where('lower(login_name) = ?', member_str.downcase).first + member = Member.case_insensitive_login_name(member_str).first if member url = Rails.application.routes.url_helpers.member_url(member, only_path: true) "[#{member_str}](#{url})" @@ -39,7 +39,7 @@ module Haml::Filters expanded = expanded.gsub(MEMBER_AT_REGEX) do |m| member_str = $1 # find member case-insensitively - member = Member.where('lower(login_name) = ?', member_str[1..-1].downcase).first + member = Member.case_insensitive_login_name(member_str[1..-1]).first if member url = Rails.application.routes.url_helpers.member_url(member, only_path: true) "[#{member_str}](#{url})" diff --git a/lib/tasks/growstuff.rake b/lib/tasks/growstuff.rake index fd0258309..de4c34bc5 100644 --- a/lib/tasks/growstuff.rake +++ b/lib/tasks/growstuff.rake @@ -146,7 +146,7 @@ namespace :growstuff do end puts "Making Skud a staff account..." - @skud = Member.find_by_login_name('Skud') + @skud = Member.find_by(login_name: 'Skud') if @skud @skud.account.account_type = @staff_account @skud.account.save @@ -157,7 +157,7 @@ namespace :growstuff do desc "June 2013: replace nil account_types with free accounts" task nil_account_type: :environment do - free = AccountType.find_by_name("Free") + free = AccountType.find_by(name: "Free") raise "Free account type not found: run rake growstuff:oneoff:setup_shop"\ unless free Account.all.each do |a| @@ -187,9 +187,9 @@ namespace :growstuff do desc "August 2013: set default creator on existing crops" task set_default_crop_creator: :environment do - cropbot = Member.find_by_login_name("cropbot") + cropbot = Member.find_by(login_name: "cropbot") raise "cropbot not found: create cropbot member on site or run rake db:seed" unless cropbot - cropbot.account.account_type = AccountType.find_by_name("Staff") # set this just because it's nice + cropbot.account.account_type = AccountType.find_by(name: "Staff") # set this just because it's nice cropbot.account.save Crop.find_each do |crop| unless crop.creator @@ -294,13 +294,11 @@ namespace :growstuff do require 'csv' file = "db/seeds/alternate_names_201410.csv" puts "Loading alternate names from #{file}..." - cropbot = Member.find_by_login_name("cropbot") + cropbot = Member.find_by(login_name: "cropbot") CSV.foreach(file) do |row| - crop_id, crop_name, alternate_names = row - if alternate_names.blank? then - next - end - crop = Crop.find_by_name(crop_name) + _crop_id, crop_name, alternate_names = row + next if alternate_names.blank? + crop = Crop.find_by(name: crop_name) if crop alternate_names.split(/,\s*/).each do |an| AlternateName.where( diff --git a/spec/controllers/admin/orders_controller_spec.rb b/spec/controllers/admin/orders_controller_spec.rb index 4c407c34d..07fe22170 100644 --- a/spec/controllers/admin/orders_controller_spec.rb +++ b/spec/controllers/admin/orders_controller_spec.rb @@ -23,7 +23,6 @@ describe Admin::OrdersController do end it "sets an error message if nothing found" do - order = FactoryGirl.create(:order) get :search, { search_by: 'order_id', search_text: 'foo' } flash[:alert].should match /Couldn't find order with/ end diff --git a/spec/controllers/roles_controller_spec.rb b/spec/controllers/roles_controller_spec.rb index f62289379..5c2271bce 100644 --- a/spec/controllers/roles_controller_spec.rb +++ b/spec/controllers/roles_controller_spec.rb @@ -24,7 +24,7 @@ describe RolesController do role = Role.create! valid_attributes get :index, {} # note that admin role exists because of login_admin_member - assigns(:roles).should eq([Role.find_by_name('admin'), role]) + assigns(:roles).should eq([Role.find_by(name: 'admin'), role]) end end end diff --git a/spec/features/plantings/planting_a_crop_spec.rb b/spec/features/plantings/planting_a_crop_spec.rb index 2494e7e41..affd691cb 100644 --- a/spec/features/plantings/planting_a_crop_spec.rb +++ b/spec/features/plantings/planting_a_crop_spec.rb @@ -59,7 +59,7 @@ feature "Planting a crop", :js do @a_past_date = 15.days.ago.strftime("%Y-%m-%d") @right_now = Date.today.strftime("%Y-%m-%d") - @a_future_date = 1.years.from_now.strftime("%Y-%m-%d") + @a_future_date = 1.year.from_now.strftime("%Y-%m-%d") end it "should show that it is not planted yet" do diff --git a/spec/features/signin_spec.rb b/spec/features/signin_spec.rb index 41aa1ecd1..7bc08147c 100644 --- a/spec/features/signin_spec.rb +++ b/spec/features/signin_spec.rb @@ -66,7 +66,7 @@ feature "signin", js: true do # Ordinarily done by database_cleaner Member.where(login_name: 'tdawg').delete_all - member = create :member, login_name: 'tdawg', email: 'example.oauth.facebook@example.com' + create :member, login_name: 'tdawg', email: 'example.oauth.facebook@example.com' # Start the test visit root_path diff --git a/spec/features/unsubscribing_spec.rb b/spec/features/unsubscribing_spec.rb index ba231d1d8..8244d207a 100644 --- a/spec/features/unsubscribing_spec.rb +++ b/spec/features/unsubscribing_spec.rb @@ -52,7 +52,6 @@ feature "unsubscribe" do # visit /members/unsubscribe/somestring ie.parameter to the URL is a random string visit unsubscribe_member_url("type=send_planting_reminder&member_id=#{member.id}") expect(page).to have_content "We're sorry, there was an error" - updated_member = Member.find(member.id) # reload the member expect(member.send_planting_reminder).to eq(true) expect(member.send_notification_email).to eq(true) end diff --git a/spec/helpers/gardens_helper_spec.rb b/spec/helpers/gardens_helper_spec.rb index c561c32d1..82a729774 100644 --- a/spec/helpers/gardens_helper_spec.rb +++ b/spec/helpers/gardens_helper_spec.rb @@ -23,7 +23,6 @@ describe GardensHelper do description: 'a' * 130 ) result = helper.display_garden_description(garden) - link = link_to("Read more", garden_path(garden)) expect(result).to eq 'a' * 130 end @@ -38,17 +37,13 @@ describe GardensHelper do describe "garden plantings" do it "is missing" do - garden = FactoryGirl.create(:garden) - plantings = nil - result = helper.display_garden_plantings(plantings) + result = helper.display_garden_plantings(nil) expect(result).to eq "None" end it "has 1 planting" do - garden = FactoryGirl.create(:garden) - plantings = [] crop = FactoryGirl.create(:crop) - plantings << FactoryGirl.create(:planting, quantity: 10, crop: crop) + plantings = [FactoryGirl.create(:planting, quantity: 10, crop: crop)] result = helper.display_garden_plantings(plantings) output = "