タグ付けされた質問 「ruby-on-rails」

Ruby on Railsは、Rubyで記述されたオープンソースのフルスタックWebアプリケーションフレームワークです。これは、人気のあるMVCフレームワークモデルに準拠しており、アプリケーション開発への「構成上の規約」アプローチで知られています。


4
Railsの移行:存在を確認して続行しますか?
私は自分の移行でこの種のことをしていました: add_column :statuses, :hold_reason, :string rescue puts "column already added" しかし、これはSQLiteでは機能しますが、PostgreSQLでは機能しないことがわかりました。add_columnが爆発した場合、例外がキャッチされてもトランザクションは停止しているため、Migrationは追加の作業を実行できないようです。 列またはテーブルがすでに存在するかどうかを確認するためのDB以外の特定の方法はありますか?それができない場合、レスキューブロックを実際に機能させる方法はありますか?

12
Rails4のLEFTOUTER JOIN
私は3つのモデルを持っています: class Student < ActiveRecord::Base has_many :student_enrollments, dependent: :destroy has_many :courses, through: :student_enrollments end class Course < ActiveRecord::Base has_many :student_enrollments, dependent: :destroy has_many :students, through: :student_enrollments end class StudentEnrollment < ActiveRecord::Base belongs_to :student belongs_to :course end 特定の学生に関連付けられているStudentEnrollmentsテーブルに存在しないCoursesテーブルのコースのリストをクエリしたいと思います。 おそらく左結合が進むべき道であることがわかりましたが、railsのjoins()はテーブルのみを引数として受け入れるようです。私が望むことをするだろうと思うSQLクエリは次のとおりです。 SELECT * FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = …

3
mongoidでnullまたは空でない場所を選択します
モデルを変更して、次のような新しいフィールドが含まれるようにしました... field :url, :type => String 私はactiveadminを使用しているので、新しいエントリを作成する@model.urlと空になり、スキーマを変更する前に作成されたエントリではnilになります。両方を選択するにはどうすればよいですか?私が試してみました: # Returns nils and strings Model.where(:url.ne => "").count # Returns strings and "" Model.where(:url.ne => nil).count # Returns strings, nils and "" Model.where(:url.ne => ["", nil]).count または、この種のシナリオのベストプラクティスがある場合は、お知らせください。

7
Ruby onRailsのウェルカム/ホームページ-ベストプラクティス
私のホームページ(またはウェルカムページ)は、2つのモデル(著者と投稿と呼びましょう)のデータで構成されます。私はRailsを初めて使用しますが、これを実現するための最良の方法がわかりません。 著者と投稿からデータを収集し、それらをウェルカムインデックスビューに表示するwelcomeという新しいコントローラーを作成する必要がありますか?または、投稿モデルの下で、作成者からもデータを取得するウェルカムビューが必要ですか?またはこれを達成する他の方法はありますか? 私はこれらすべてを技術的に行う方法を理解していますが、railsフレームワークを使用したベストプラクティスの方法がわからないだけです。

5
Web開発の学習:Django vs Node vs Rails vs Others [クローズ]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 7年前に閉鎖されました。 この質問を改善する 私はJavaとPython(いくつかのDjangoを含む)と少しのRuby(Railsなし)とNode.jsを知っていますが、おそらく私が知らないことがもっとあります。 私はWeb開発とその完全なスタックの学習を開始することを計画していますが、周りを見るとたくさんのオプションがあり、これは私を混乱させます。次のパラメータに基づいた提案が必要です 学びやすい 構築と反復が容易 展開が簡単(無料で安価なホスティングソリューションなど) 人気 アドバイスをお願いします ありがとうございました

8
60秒以内に安定したFirefox接続を取得できません(127.0.0.1:7055)
rspecテストの実行時に次のエラーが発生する Railsで60秒(127.0.0.1:7055)で安定したFirefox接続を取得できません 最新のルビー(1.9.2)とFirefox(6.0)を使用 rspec-rails、capybara、その他いくつかのgemを使用していますが、問題はないようです。これらのテストは、別の環境(Linux)で正常に実行されます。

19
サーバーはすでに実行されています。…/ tmp / pids / server.pidを確認してください。終了-レール
..$ rails s => Booting WEBrick => Rails 4.0.4 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid. Exiting Railsの初心者にとってこれを解決する最も簡単な方法は何ですか?

3
Ruby 2.7.0でRailsの警告メッセージを修正する方法
誰かがこの問題を解決しましたRuby 2.7.0か? rbenvRuby v2.7.0 を使用してインストールし、次にを使用してRailsプロジェクトを作成しましたRails v6.0.2.1。 現在のところ、 rails s rails s -u puma rails s -u webrick サーバーは稼働しており、サイトは提供されていConsoleますが、ログに2つの警告メッセージが表示されます。 local:~/rcode/rb27$ rails s => Booting Puma => Rails 6.0.2.1 application starting in development => Run `rails server --help` for more startup options .rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is …


4
未定義のメソッド「transform_keys」がSidekiq Webをロード
gemを更新した後、sidekiq Webサイトが読み込まれず、次のエラーが発生します。 NoMethodError (undefined method `transform_keys' for <ActionDispatch::Request::Session:0x00005568df2a8710>): 更新された宝石は次のとおりです。 selenium-webdriver 3.142.7 rack-protection 2.0.8.1 mime-types 3.3.1 mini_magick 4.10.1 image_processing 1.10.3 groupdate 4.3.0 friendly_id 5.3.0 faraday 0.17.3 http 4.3.0 public_suffix 4.0.3 rack 2.1.1 crass 1.0.6 i18n 1.7.1 minitest 5.14.0 rubyバージョン:ruby 2.6.0p0(2018-12-25リビジョン66547)[x86_64-linux] 完全なエラーメッセージ

2
Amazon RDS SSL / TLS証明書を更新する-Elastic Beanstalk
AWSは最近、次の必要性を発表しました。 2019年10月31日までにAmazon RDS SSL / TLS証明書を更新してください RDSを使用してPostgres DBに接続する従来のElastic BeanstalkロードバランサーでホストされているRailsアプリケーションがあります。 Amazonによる必要な手順は次のとおりです。 SSL / TLSを使用したDBインスタンスへの接続の暗号化から新しいSSL / TLS証明書をダウンロードします。 新しいSSL / TLS証明書を使用するようにデータベースアプリケーションを更新します。 DBインスタンスを変更して、CAをrds-ca-2015からrds-ca-2019に変更します。 (https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html) ロードバランサーをこのように設定しているため(SSLではなくHTTPポート80を介してEC2インスタンスに接続しています)、これはステップ1と2を実行する必要がなく、ステップ3のみを実行する必要があることを意味しますか? または、更新された証明書をダウンロードして、手動でロードバランサーまたはECインスタンスにインストール/追加する必要がありますか?それを行う方法がわかりません。

4
#<Bundler :: RubygemsIntegration:0x00005633f09a9000>の未定義のメソッド `plain_specs '(NoMethodError)
私は自分の仕事にあるプロジェクトをプルしました。実行しようとするrails db:migrateと、ターミナルから「Bundler 2」をインストールするように要求されたので、それを実行しました。 今、私がやろうとしたときにrails db:migrate、次のエラーが発生しました: /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:84:in `setup': undefined method `plain_specs' for #&lt;Bundler::RubygemsIntegration:0x00005633f09a9000&gt; (NoMethodError) from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:124:in `check' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:131:in `&lt;top (required)&gt;' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:168:in `require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:178:in `require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems_executable_plugin.rb:4:in `block in &lt;top (required)&gt;' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:50:in `block in run' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:49:in `each' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:49:in `run' from /home/acartesc/.rvm/gems/ruby-2.4.3/bin/ruby_executable_hooks:10:in …

3
切り替えるために複数のデータベース接続プールをレールに置くことは可能でしょうか?
少し背景 私は何年もマルチテナントアプリを実行するためにApartment gemを使用しています。最近、データベースを別のホストにスケールアウトする必要が出てきました。dbサーバーはこれ以上追いつくことができません(読み取りと書き込みの両方が多すぎる)-そしてはい、ハードウェアを最大にスケールしました(専用)ハードウェア、64コア、RAID 10の12個のNvm-eドライブ、384Gb RAMなど)。 これはnumber-of-tenants、アプリケーションコードを変更することなく、最大で倍の容量を実現するための「シンプル」で効率的な方法であるため、このテナントごと(1テナント= 1データベース接続構成/プール)を使用することを検討していました。 現在、私はレール4.2気圧を実行していますが、すぐに5.2にアップグレードします。rails 6はモデルごとの接続定義のサポートを追加していることがわかりますが、20のテナントごとに完全にミラーリングされたデータベーススキーマがあるため、実際には必要ありません。通常、リクエストごと(ミドルウェア内)またはバックグラウンドジョブごと(sidekiqミドルウェア)に「データベース」を切り替えますがsearch_path、Postgresqlでを設定するだけで実際の接続は実際には変更しないので、これは現在のところ簡単で、Apartment gemで処理されます。テナントごとのホスティング戦略に切り替える場合、リクエストごとに接続全体を切り替える必要があります。 質問: 私ActiveRecord::Base.establish_connection(config)はリクエストごと/バックグラウンドジョブを実行できることを理解しています-しかし、私も理解しているように、まったく新しいデータベース接続のハンドシェイクが作成され、新しいDBプールがRailsで生成されます-正しいですか?これは、アプリケーションへのすべてのリクエストでこの種のオーバーヘッドを発生させるパフォーマンス自殺になると思います。 したがって、たとえば複数(合計20)のデータベース接続/プールを最初から(たとえば、アプリケーションの起動時に)事前に確立するレールのオプションが表示され、リクエストごとにそれらのプールを切り替えることができるかどうか疑問に思いますか?そのため、彼はdb接続がすでに作成され、使用できるようになっています。 これらはすべて単に貧しい貧しいアイデアですか?代わりに別のアプローチを探す必要がありますか?たとえば、1つのアプリインスタンス= 1つの特定のテナントへの1つの特定の接続。または、他の何か。

1
gem globalizeを使用して、ページ全体ではなく入力のみのロケールを切り替える方法は?
コンテキスト:自転車レンタル用のRuby on Railsアプリの場合:description、さまざまな言語での入力を処理するためにgem globalizeを使用しています。 現在の状態:description特定の言語で保存できるロケールに応じて、グローバライズの実装が機能しました。の入力:descriptionは、Webページ全体のロケールに基づいて処理されます。 つまり:description、正しい言語で保存するには、このページのすべての言語を変更する必要があります。 または、使用可能なすべてのロケールを表示してdescription、それぞれに表示することもできます。(以下のコメント化されたコードも参照してください)。 質問:ユーザーが言語:descriptionのみを選択し:descriptionて、Webページ全体の言語を変更せずに正しい言語で保存できるようにする方法を探しています。 コード 形 &lt;div class="row"&gt; &lt;%# I18n.available_locales.each do |locale| %&gt; &lt;!-- &lt;h1&gt;&lt;%#= locale %&gt;&lt;/h1&gt; --&gt; &lt;%= f.globalize_fields_for locale do |ff| %&gt; &lt;div class="col-10"&gt; &lt;div class="form-group"&gt; &lt;label class="form-control-label text required" for="accommodation_category_description"&gt;Description&lt;/label&gt; &lt;div&gt;&lt;%= ff.text_area :description, :rows =&gt;"5", :cols =&gt;"30", class:"form-control is-valid text required" %&gt;&lt;/div&gt; &lt;/div&gt; …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.