add creature and base rp_world

This commit is contained in:
2021-06-02 22:24:04 +02:00
parent 5b3da08707
commit 62464846a3
56 changed files with 432 additions and 13 deletions

View File

@@ -35,7 +35,7 @@ gem 'omniauth-bnet', '~> 2.0.0'
# This gem provides a mitigation against CVE-2015-9284 # This gem provides a mitigation against CVE-2015-9284
gem 'omniauth-rails_csrf_protection', '~> 0.1.2' gem 'omniauth-rails_csrf_protection', '~> 0.1.2'
# A Ruby wrapper around Blizzard's Game Data and Profile APIs # A Ruby wrapper around Blizzard's Game Data and Profile APIs
gem 'rbattlenet', '~> 2.2.7', git: 'https://github.com/Dainii/rbattlenet' gem 'rbattlenet', '~> 2.2.9', git: 'https://github.com/Dainii/rbattlenet'
# A gem that provides Rails integration for the Sentry error logger # A gem that provides Rails integration for the Sentry error logger
gem 'sentry-rails', '~> 4.4.0' gem 'sentry-rails', '~> 4.4.0'
gem 'sentry-ruby', '~> 4.4.1' gem 'sentry-ruby', '~> 4.4.1'

View File

@@ -1,8 +1,8 @@
GIT GIT
remote: https://github.com/Dainii/rbattlenet remote: https://github.com/Dainii/rbattlenet
revision: 6fc990a743b1cec56e95820aec9222b5ff2e843a revision: a0492dd16f9b29b61e364009272d60e9201e1337
specs: specs:
rbattlenet (2.2.7) rbattlenet (2.2.9)
require_all require_all
typhoeus (~> 1.1) typhoeus (~> 1.1)
@@ -163,7 +163,7 @@ GEM
multi_xml (0.6.0) multi_xml (0.6.0)
multipart-post (2.1.1) multipart-post (2.1.1)
nio4r (2.5.7) nio4r (2.5.7)
nokogiri (1.11.3-x86_64-linux) nokogiri (1.11.6-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
oauth2 (1.4.7) oauth2 (1.4.7)
faraday (>= 0.8, < 2.0) faraday (>= 0.8, < 2.0)
@@ -186,7 +186,7 @@ GEM
orm_adapter (0.5.0) orm_adapter (0.5.0)
pagy (4.3.0) pagy (4.3.0)
parallel (1.20.1) parallel (1.20.1)
parser (3.0.1.0) parser (3.0.1.1)
ast (~> 2.4.1) ast (~> 2.4.1)
pg (1.2.3) pg (1.2.3)
pry (0.14.1) pry (0.14.1)
@@ -272,17 +272,17 @@ GEM
rspec-mocks (~> 3.10) rspec-mocks (~> 3.10)
rspec-support (~> 3.10) rspec-support (~> 3.10)
rspec-support (3.10.2) rspec-support (3.10.2)
rubocop (1.13.0) rubocop (1.16.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 3.0.0.0) parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0) rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0) regexp_parser (>= 1.8, < 3.0)
rexml rexml
rubocop-ast (>= 1.2.0, < 2.0) rubocop-ast (>= 1.7.0, < 2.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0) unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.4.1) rubocop-ast (1.7.0)
parser (>= 2.7.1.5) parser (>= 3.0.1.1)
rubocop-performance (1.11.0) rubocop-performance (1.11.0)
rubocop (>= 1.7.0, < 2.0) rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0) rubocop-ast (>= 0.4.0)
@@ -329,7 +329,7 @@ GEM
simplecov_json_formatter (~> 0.1) simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3) simplecov-html (0.12.3)
simplecov_json_formatter (0.1.2) simplecov_json_formatter (0.1.2)
solargraph (0.40.4) solargraph (0.41.1)
backport (~> 1.1) backport (~> 1.1)
benchmark benchmark
bundler (>= 1.17.2) bundler (>= 1.17.2)
@@ -411,7 +411,7 @@ DEPENDENCIES
rails (~> 6.1.3, >= 6.1.3.1) rails (~> 6.1.3, >= 6.1.3.1)
rails-erd rails-erd
rails-i18n (~> 6.0.0) rails-i18n (~> 6.0.0)
rbattlenet (~> 2.2.7)! rbattlenet (~> 2.2.9)!
redis (~> 4.2.5) redis (~> 4.2.5)
rspec-rails rspec-rails
rubocop rubocop

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the RpWorld controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: https://sass-lang.com/

View File

@@ -0,0 +1,9 @@
class RpWorldsController < ApplicationController
def index
@rp_worlds = RpWorld.all
end
def show
@rp_world = RpWorld.includes(:wow_characters).find(params[:id])
end
end

View File

@@ -0,0 +1,2 @@
module RpWorldHelper
end

9
app/models/rp_world.rb Normal file
View File

@@ -0,0 +1,9 @@
class RpWorld < ApplicationRecord
belongs_to :user
alias_attribute :owner, :user
has_many :wow_character_play_rp_worlds, dependent: :destroy
has_many :wow_characters, through: :wow_character_play_rp_worlds
alias_attribute :members, :wow_characters
validates :name, presence: true
end

View File

@@ -17,6 +17,8 @@ class WowCharacter < ApplicationRecord
has_one :wow_character_medium, dependent: :destroy has_one :wow_character_medium, dependent: :destroy
has_many :wow_standings, dependent: :destroy has_many :wow_standings, dependent: :destroy
has_many :wow_reputations, through: :wow_standings has_many :wow_reputations, through: :wow_standings
has_many :wow_character_play_rp_worlds, dependent: :destroy
has_many :rp_worlds, through: :wow_character_play_rp_worlds
validates :name, presence: true validates :name, presence: true
validates :character_id, presence: true, uniqueness: true validates :character_id, presence: true, uniqueness: true

View File

@@ -0,0 +1,7 @@
class WowCharacterPlayRpWorld < ApplicationRecord
belongs_to :wow_character
belongs_to :rp_world
validates :status, presence: true, format: { with: /(INVITED|PENDING|PLAYING|BANNED)/ }
validates :role, presence: true, format: { with: /(PLAYER|MODERATOR|ADMIN)/ }
end

View File

@@ -0,0 +1,10 @@
class WowCreature < ApplicationRecord
extend Mobility
translates :name
belongs_to :wow_creature_family, optional: true
belongs_to :wow_creature_type, optional: true
validates :name, presence: true
validates :creature_id, presence: true, uniqueness: true
end

View File

@@ -0,0 +1,9 @@
class WowCreatureFamily < ApplicationRecord
extend Mobility
translates :name
has_many :wow_creatures, dependent: :destroy
validates :name, presence: true
validates :creature_family_id, presence: true, uniqueness: true
end

View File

@@ -0,0 +1,9 @@
class WowCreatureType < ApplicationRecord
extend Mobility
translates :name
has_many :wow_creatures, dependent: :destroy
validates :name, presence: true
validates :creature_type_id, presence: true, uniqueness: true
end

View File

@@ -16,6 +16,9 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link <%= 'active' if current_page?(wow_reputations_path) %>" aria-current="page" href="<%= wow_reputations_path %>"><%= t('layouts.navbar.reputations') %></a> <a class="nav-link <%= 'active' if current_page?(wow_reputations_path) %>" aria-current="page" href="<%= wow_reputations_path %>"><%= t('layouts.navbar.reputations') %></a>
</li> </li>
<li class="nav-item">
<a class="nav-link <%= 'active' if current_page?(rp_worlds_path) %>" aria-current="page" href="<%= rp_worlds_path %>"><%= t('layouts.navbar.worlds') %></a>
</li>
</ul> </ul>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0"> <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
<%= render 'layouts/locales' %> <%= render 'layouts/locales' %>

View File

@@ -0,0 +1,18 @@
<h2>Characters list</h2>
<table class="table table-hover table-dark table-image">
<thead>
<tr>
<th scope="col"><%= t('rp_worlds.world_list.name') %></th>
<th scope="col"><%= t('rp_worlds.world_list.description') %></th>
</tr>
</thead>
<tbody>
<% @rp_worlds.each do |world| %>
<tr>
<td><%= link_to world.name, world %></td>
<td><%= world.description %></td>
</tr>
<% end %>
</tbody>
</table>

View File

@@ -0,0 +1,17 @@
<div class="row">
<div class="col-5">
<div class="card">
<div class="card-body">
<h5 class="card-title"><%= @rp_world.name %></h5>
<p class="card-text">Description: <%= @rp_world.description %></p>
<p>Membres: </p>
<% @rp_world.wow_characters.each do |member| %>
<p><%= link_to member.name, member %></p>
<% end %>
</div>
</div>
</div>
<div class="col-7">
<h1>Suite...</h1>
</div>
</div>

View File

@@ -0,0 +1,22 @@
# frozen_string_literal: true
class WowCreatureFamiliesWorker < WowSidekiqWorker
def perform
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
RBattlenet.set_options(locale: 'all')
result = RBattlenet::Wow::CreatureFamily.all
return unless result.status_code == 200
result.creature_families.each do |creature_family|
wow_creature_family = WowCreatureFamily.find_or_initialize_by(creature_family_id: creature_family.id)
# Localisation data
locales.each do |locale|
Mobility.with_locale(locale[0]) { wow_creature_family.name = creature_family.name[locale[1]] }
end
wow_creature_family.save
end
end
end

View File

@@ -0,0 +1,22 @@
# frozen_string_literal: true
class WowCreatureTypesWorker < WowSidekiqWorker
def perform
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
RBattlenet.set_options(locale: 'all')
result = RBattlenet::Wow::CreatureType.all
return unless result.status_code == 200
result.creature_types.each do |creature_type|
wow_creature_type = WowCreatureType.find_or_initialize_by(creature_type_id: creature_type.id)
# Localisation data
locales.each do |locale|
Mobility.with_locale(locale[0]) { wow_creature_type.name = creature_type.name[locale[1]] }
end
wow_creature_type.save
end
end
end

View File

@@ -0,0 +1,42 @@
# frozen_string_literal: true
class WowCreaturesWorker < WowSidekiqWorker
def perform(creature_id, batch_size, keep_going_on)
RBattlenet.authenticate(client_id: ENV['BLIZZARD_API_CLIENT_ID'], client_secret: ENV['BLIZZARD_API_CLIENT_SECRET'])
RBattlenet.set_options(locale: 'all')
params = {
_page: 1,
_pageSize: batch_size,
orderby: 'id',
filters: { id: "[#{creature_id},]" }
}
result = RBattlenet::Wow::Search::Creature.find(params)
return unless result.status_code == 200
result.results&.each do |creature|
wow_creature = WowCreature.find_or_initialize_by(creature_id: creature.data.id)
wow_creature.display_id = creature.data.creature_displays&.first&.id
wow_creature.is_tameable = creature.data&.is_tameable
wow_creature.wow_creature_family = WowCreatureFamily.find_by(creature_family_id: creature.data.family.id) if creature.data.family
wow_creature.wow_creature_type = WowCreatureType.find_by(creature_type_id: creature.data.type.id) if creature.data.type
# Localisation data
locales.each do |locale|
Mobility.with_locale(locale[0]) do
wow_creature.name = creature.data.name[locale[1]]
end
end
wow_creature.save
end
# Create a new job for the next batch if keep_going_on is true
return unless keep_going_on && !result.results.count.zero?
WowCreaturesWorker.perform_async(result.results.last.data.id + 1, batch_size, keep_going_on)
end
end

View File

@@ -5,3 +5,4 @@ de-de:
mounts: "Anschlüsse" mounts: "Anschlüsse"
pets: "Maskottchen" pets: "Maskottchen"
reputations: "Reputationen" reputations: "Reputationen"
worlds: "Rollenspielwelten"

View File

@@ -5,3 +5,4 @@ en-gb:
mounts: "Mounts" mounts: "Mounts"
pets: "Pets" pets: "Pets"
reputations: "Reputations" reputations: "Reputations"
worlds: "Roleplay Worlds"

View File

@@ -5,3 +5,4 @@ en-us:
mounts: "Mounts" mounts: "Mounts"
pets: "Pets" pets: "Pets"
reputations: "Reputations" reputations: "Reputations"
worlds: "Roleplay Worlds"

View File

@@ -5,3 +5,4 @@ es-es:
mounts: "Montajes" mounts: "Montajes"
pets: "Mascotas" pets: "Mascotas"
reputations: "Reputaciones" reputations: "Reputaciones"
worlds: "Mundos de juegos de rol"

View File

@@ -5,3 +5,4 @@ es-mx:
mounts: "Montajes" mounts: "Montajes"
pets: "Mascotas" pets: "Mascotas"
reputations: "Reputaciones" reputations: "Reputaciones"
worlds: "Mundos de juegos de rol"

View File

@@ -5,3 +5,4 @@ fr-fr:
mounts: "Montures" mounts: "Montures"
pets: "Mascottes" pets: "Mascottes"
reputations: "Réputations" reputations: "Réputations"
worlds: "Mondes de jeu de rôle"

View File

@@ -5,3 +5,4 @@ it:
mounts: "Monti" mounts: "Monti"
pets: "Mascotti" pets: "Mascotti"
reputations: "Reputazioni" reputations: "Reputazioni"
worlds: "Mondi di gioco di ruolo"

View File

@@ -5,3 +5,4 @@ ko:
mounts: "마운트" mounts: "마운트"
pets: "마스코트" pets: "마스코트"
reputations: "평판" reputations: "평판"
worlds: "롤 플레이 세계"

View File

@@ -5,3 +5,4 @@ pt-br:
mounts: "Montagens" mounts: "Montagens"
pets: "Mascote" pets: "Mascote"
reputations: "Reputações" reputations: "Reputações"
worlds: "Mundos de RPG"

View File

@@ -5,3 +5,4 @@ ru-ru:
mounts: "Крепления" mounts: "Крепления"
pets: "Талисман" pets: "Талисман"
reputations: "Репутации" reputations: "Репутации"
worlds: "Ролевые миры"

View File

@@ -5,3 +5,4 @@ zh-cn:
mounts: "坐骑" mounts: "坐骑"
pets: "吉祥物" pets: "吉祥物"
reputations: "名声" reputations: "名声"
worlds: "角色扮演世界"

View File

@@ -5,3 +5,4 @@ zh-tw:
mounts: "坐骑" mounts: "坐骑"
pets: "吉祥物" pets: "吉祥物"
reputations: "名声" reputations: "名声"
worlds: "角色扮演世界"

View File

@@ -0,0 +1,5 @@
de-de:
rp_worlds:
world_list:
name: "Name"
description: "Beschreibung"

View File

@@ -0,0 +1,5 @@
en-gb:
rp_worlds:
world_list:
name: "Name"
description: "Description"

View File

@@ -0,0 +1,5 @@
en-gb:
rp_worlds:
world_list:
name: "Name"
description: "Description"

View File

@@ -0,0 +1,5 @@
es-es:
rp_worlds:
world_list:
name: "Nombre"
description: "Descripción"

View File

@@ -0,0 +1,5 @@
es-mx:
rp_worlds:
world_list:
name: "Nombre"
description: "Descripción"

View File

@@ -0,0 +1,5 @@
en-gb:
rp_worlds:
world_list:
name: "Nom"
description: "Description"

View File

@@ -0,0 +1,5 @@
it:
rp_worlds:
world_list:
name: "Nome"
description: "Descrizione"

View File

@@ -0,0 +1,5 @@
ko:
rp_worlds:
world_list:
name: "이름"
description: "기술"

View File

@@ -0,0 +1,5 @@
pt-br:
rp_worlds:
world_list:
name: "Sobrenome"
description: "Descrição"

View File

@@ -0,0 +1,5 @@
ru-ru:
rp_worlds:
world_list:
name: "Фамилия"
description: "Описание"

View File

@@ -0,0 +1,5 @@
zh-cn:
rp_worlds:
world_list:
name: "姓"
description: "描述"

View File

@@ -0,0 +1,5 @@
zh-tw:
rp_worlds:
world_list:
name: "姓"
description: "描述"

View File

@@ -1,4 +1,4 @@
en-gb: fr-fr:
wow_mounts: wow_mounts:
mount_list: mount_list:
name: "Nom" name: "Nom"

View File

@@ -14,5 +14,6 @@ Rails.application.routes.draw do
resources :wow_mounts, only: [:index, :show] resources :wow_mounts, only: [:index, :show]
resources :wow_pets, only: [:index, :show] resources :wow_pets, only: [:index, :show]
resources :wow_reputations, only: [:index, :show] resources :wow_reputations, only: [:index, :show]
resources :rp_worlds, only: [:index, :show]
end end
end end

View File

@@ -0,0 +1,11 @@
class CreateRpWorlds < ActiveRecord::Migration[6.1]
def change
create_table :rp_worlds do |t|
t.string :name
t.string :description
t.belongs_to :user
t.timestamps
end
end
end

View File

@@ -0,0 +1,12 @@
class CreateWowCharacterPlayRpWorlds < ActiveRecord::Migration[6.1]
def change
create_table :wow_character_play_rp_worlds do |t|
t.string :status
t.string :role
t.belongs_to :wow_character
t.belongs_to :rp_world
t.timestamps
end
end
end

View File

@@ -0,0 +1,13 @@
class CreateWowCreatureFamilies < ActiveRecord::Migration[6.1]
def change
create_table :wow_creature_families do |t|
t.integer :creature_family_id
t.jsonb :name
t.integer :media_id
t.timestamps
end
add_index :wow_creature_families, :creature_family_id, unique: true
end
end

View File

@@ -0,0 +1,12 @@
class CreateWowCreatureTypes < ActiveRecord::Migration[6.1]
def change
create_table :wow_creature_types do |t|
t.integer :creature_type_id
t.jsonb :name
t.timestamps
end
add_index :wow_creature_types, :creature_type_id, unique: true
end
end

View File

@@ -0,0 +1,16 @@
class CreateWowCreatures < ActiveRecord::Migration[6.1]
def change
create_table :wow_creatures do |t|
t.integer :creature_id
t.jsonb :name
t.boolean :is_tameable
t.integer :display_id
t.belongs_to :wow_creature_family
t.belongs_to :wow_creature_type
t.timestamps
end
add_index :wow_creatures, :creature_id, unique: true
end
end

53
db/schema.rb generated
View File

@@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_05_30_151735) do ActiveRecord::Schema.define(version: 2021_06_02_193023) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@@ -49,6 +49,15 @@ ActiveRecord::Schema.define(version: 2021_05_30_151735) do
t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_text_translations_on_keys", unique: true t.index ["translatable_id", "translatable_type", "locale", "key"], name: "index_mobility_text_translations_on_keys", unique: true
end end
create_table "rp_worlds", force: :cascade do |t|
t.string "name"
t.string "description"
t.bigint "user_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["user_id"], name: "index_rp_worlds_on_user_id"
end
create_table "user_obtain_wow_mounts", force: :cascade do |t| create_table "user_obtain_wow_mounts", force: :cascade do |t|
t.bigint "user_id" t.bigint "user_id"
t.bigint "wow_mount_id" t.bigint "wow_mount_id"
@@ -95,6 +104,17 @@ ActiveRecord::Schema.define(version: 2021_05_30_151735) do
t.index ["wow_character_id"], name: "index_wow_character_media_on_wow_character_id" t.index ["wow_character_id"], name: "index_wow_character_media_on_wow_character_id"
end end
create_table "wow_character_play_rp_worlds", force: :cascade do |t|
t.string "status"
t.string "role"
t.bigint "wow_character_id"
t.bigint "rp_world_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["rp_world_id"], name: "index_wow_character_play_rp_worlds_on_rp_world_id"
t.index ["wow_character_id"], name: "index_wow_character_play_rp_worlds_on_wow_character_id"
end
create_table "wow_character_titles", force: :cascade do |t| create_table "wow_character_titles", force: :cascade do |t|
t.jsonb "name" t.jsonb "name"
t.string "href" t.string "href"
@@ -171,6 +191,37 @@ ActiveRecord::Schema.define(version: 2021_05_30_151735) do
t.index ["covenant_id"], name: "index_wow_covenants_on_covenant_id", unique: true t.index ["covenant_id"], name: "index_wow_covenants_on_covenant_id", unique: true
end end
create_table "wow_creature_families", force: :cascade do |t|
t.integer "creature_family_id"
t.jsonb "name"
t.integer "media_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["creature_family_id"], name: "index_wow_creature_families_on_creature_family_id", unique: true
end
create_table "wow_creature_types", force: :cascade do |t|
t.integer "creature_type_id"
t.jsonb "name"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["creature_type_id"], name: "index_wow_creature_types_on_creature_type_id", unique: true
end
create_table "wow_creatures", force: :cascade do |t|
t.integer "creature_id"
t.jsonb "name"
t.boolean "is_tameable"
t.integer "display_id"
t.bigint "wow_creature_family_id"
t.bigint "wow_creature_type_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["creature_id"], name: "index_wow_creatures_on_creature_id", unique: true
t.index ["wow_creature_family_id"], name: "index_wow_creatures_on_wow_creature_family_id"
t.index ["wow_creature_type_id"], name: "index_wow_creatures_on_wow_creature_type_id"
end
create_table "wow_geo_maps", force: :cascade do |t| create_table "wow_geo_maps", force: :cascade do |t|
t.integer "map_id" t.integer "map_id"
t.jsonb "name" t.jsonb "name"

View File

@@ -0,0 +1,15 @@
require 'rails_helper'
# Specs in this file have access to a helper object that includes
# the RpWorldHelper. For example:
#
# describe RpWorldHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# expect(helper.concat_strings("this","that")).to eq("this that")
# end
# end
# end
RSpec.describe RpWorldHelper, type: :helper do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe RpWorld, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe WowCharacterPlayRpWorld, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe WowCreatureFamily, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe WowCreature, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe WowCreatureType, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -0,0 +1,7 @@
require 'rails_helper'
RSpec.describe "RpWorlds", type: :request do
describe "GET /index" do
pending "add some examples (or delete) #{__FILE__}"
end
end