Compare commits

..

7 Commits

Author SHA1 Message Date
みてるぞ 351b8348c9 #309 2026-04-19 20:14:01 +09:00
みてるぞ 2ea08ef4dd #309 2026-04-19 19:49:56 +09:00
みてるぞ 58429c5e8b #309 2026-04-19 17:58:06 +09:00
みてるぞ 96307af509 #309 2026-04-19 17:47:22 +09:00
みてるぞ f3a2b08359 #309 2026-04-19 17:14:47 +09:00
みてるぞ 86de85ad91 Merge remote-tracking branch 'origin/main' into feature/309 2026-04-19 16:45:03 +09:00
みてるぞ f3d9e88ea2 #309 2026-04-19 05:29:59 +09:00
3 changed files with 11 additions and 34 deletions
+7 -24
View File
@@ -1,26 +1,18 @@
class UsersController < ApplicationController class UsersController < ApplicationController
def create def create
return head :unprocessable_entity if request.remote_ip.blank? user = User.create!(inheritance_code: SecureRandom.uuid, role: 'guest')
user = nil
User.transaction do
user = User.create!(inheritance_code: SecureRandom.uuid, role: :guest)
attach_ip_address!(user)
end
render json: { code: user.inheritance_code, render json: { code: user.inheritance_code,
user: user.slice(:id, :name, :inheritance_code, :role) }, user: user.slice(:id, :name, :inheritance_code, :role) }
status: :created
end end
def verify def verify
ip_bin = IPAddr.new(request.remote_ip).hton
ip_address = IpAddress.find_or_create_by!(ip_address: ip_bin)
user = User.find_by(inheritance_code: params[:code]) user = User.find_by(inheritance_code: params[:code])
return render json: { valid: false } unless user return render json: { valid: false } unless user
return head :unprocessable_entity if request.remote_ip.blank? UserIp.find_or_create_by!(user:, ip_address:)
attach_ip_address!(user)
render json: { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) } render json: { valid: true, user: user.slice(:id, :name, :inheritance_code, :role) }
end end
@@ -49,18 +41,9 @@ class UsersController < ApplicationController
return head :bad_request if name.blank? return head :bad_request if name.blank?
if user.update(name:) if user.update(name:)
render json: user.slice(:id, :name, :inheritance_code, :role), status: :ok render json: user.slice(:id, :name, :inheritance_code, :role), status: :created
else else
render json: user.errors, status: :unprocessable_entity render json: user.errors, status: :unprocessable_entity
end end
end end
private
def attach_ip_address! user
ip_bin = IPAddr.new(request.remote_ip).hton
ip_address = IpAddress.create_or_find_by!(ip_address: ip_bin)
UserIp.create_or_find_by!(user:, ip_address:)
end
end end
+1 -8
View File
@@ -1,19 +1,12 @@
env :PATH, '/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/bin:/usr/bin:/bin' env :PATH, '/root/.rbenv/shims:/root/.rbenv/bin:/usr/local/bin:/usr/bin:/bin'
set :path, '/var/www/btrc-hub/backend'
set :environment, 'production'
set :output, standard: '/var/log/btrc_hub_nico_sync.log', set :output, standard: '/var/log/btrc_hub_nico_sync.log',
error: '/var/log/btrc_hub_nico_sync_err.log' error: '/var/log/btrc_hub_nico_sync_err.log'
job_type :rake, every 1.day, at: '3:00 pm' do
'cd :path && set -a && . /etc/btrc-hub/backend.env && set +a && ' \
':environment_variable=:environment bundle exec rake :task --silent :output'
every 1.day, at: '11:00 am' do
rake 'nico:sync', environment: 'production' rake 'nico:sync', environment: 'production'
end end
every 1.day, at: '0:00 am' do every 1.day, at: '0:00 am' do
rake 'post_similarity:calc', environment: 'production' rake 'post_similarity:calc', environment: 'production'
rake 'tag_similarity:calc', environment: 'production'
end end
+3 -2
View File
@@ -1,10 +1,11 @@
require "rails_helper" require "rails_helper"
RSpec.describe "Users", type: :request do RSpec.describe "Users", type: :request do
describe "POST /users" do describe "POST /users" do
it "creates guest user and returns code" do it "creates guest user and returns code" do
post "/users" post "/users"
expect(response).to have_http_status(:created) expect(response).to have_http_status(:ok)
expect(json["code"]).to be_present expect(json["code"]).to be_present
expect(json["user"]["role"]).to eq("guest") expect(json["user"]["role"]).to eq("guest")
end end
@@ -37,7 +38,7 @@ RSpec.describe "Users", type: :request do
sign_in_as(user) sign_in_as(user)
put "/users/#{user.id}", params: { name: "new-name" } put "/users/#{user.id}", params: { name: "new-name" }
expect(response).to have_http_status(:ok) expect(response).to have_http_status(:created)
expect(json["id"]).to eq(user.id) expect(json["id"]).to eq(user.id)
expect(json["name"]).to eq("new-name") expect(json["name"]).to eq("new-name")