我已经使用 Ruby 3.0.0 从头开始创建了一个新的 Rails 6.1 应用程序。
我已经运行db:create
并生成了一个带有一些字符串列的单个模型,后跟rails db:migrate
.
我跑了rails test
但是得到了这个需要 rexml 错误:
/Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:34:in `require': cannot load such file -- rexml/document (LoadError)
from /Users/froop/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `block in require'
from /Users/froop/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
from /Users/froop/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `require'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/firefox.rb:22:in `<main>'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
from /Users/froop/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `block in require'
from /Users/froop/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:299:in `load_dependency'
from /Users/froop/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/activesupport-6.1.0/lib/active_support/dependencies.rb:332:in `require'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/webdrivers-4.4.1/lib/webdrivers/geckodriver.rb:72:in `<main>'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
from /Users/froop/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in …
Run Code Online (Sandbox Code Playgroud) 我想使用 RVM 下载最新的 Ruby 版本(版本 3.0.0),但在运行时遇到以下错误rvm install 3.0.0
:
Unknown ruby interpreter version (do not know how to handle): 3.0.0
Run Code Online (Sandbox Code Playgroud)
我也试过3
& 3.0
,但给出了同样的错误。
根据这个页面,它应该可以通过 RVM 获得。我已经在使用 RVM 来管理我的 ruby 版本,所以我不想使用rbenv
......也不想从源代码安装。
如何3.0.0
使用 RVM 安装Ruby 版本?
我在这里需要一些帮助。我正在设置一台新的 2020 年 Macbook Pro M1。
我已经完成了在 Mac 上安装 ruby/rails 的所有常规步骤,但是我无法完成rails new
。在安装的以下部分后,我收到此错误:
E*****@Admins-MBP desktop % rails new testapp
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create .gitattributes
create Gemfile
run git init from "."
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call: …
Run Code Online (Sandbox Code Playgroud) 升级到 ruby 3 和 rails 6.1 后,我的测试中断了
subject.avatar.attach(fixture_file_upload(Rails.root.join('spec', 'fixtures', 'images', 'avatar.jpg')))
Run Code Online (Sandbox Code Playgroud)
和:
NoMethodError:
undefined method `file_fixture_path' for RSpec::Rails::FixtureFileUploadSupport::RailsFixtureFileWrapper:Class
Did you mean? fixture_path
Run Code Online (Sandbox Code Playgroud)
错误堆栈指向
webmock-3.11.0/lib/webmock/rspec.rb:37
任何建议如何调试它?
我很高兴使用最新的 ruby 3.0;以及可以访问更新的命令行解释器,该解释器可以进行语法突出显示和着色。
然而,颜色对我来说有点难看。我怎样才能改变它们?IRB 的命令行选项允许我使用 关闭着色--nocolorize
,但我无法弄清楚配置文件在哪里,可以让我更改默认值(例如,使蓝色更亮。)
我有一个项目正在尝试使用 ruby 3(以前使用 2.7.2 运行),但无法完成。
使用 ruby 版本更新我的 gemfile 并运行后bundle
,我在尝试访问时收到此错误rails c
:
/home/rwehresmann/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': cannot load such file -- webrick/httputils (LoadError)
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加 webrick gem 以查看会发生什么,结果是rails c
卡住了。
这是我的 gemfile:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '3.0.0'
gem 'rails', '~> 6.0.1'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', ">= 4.3.3"
gem 'aws-sdk-s3', '~> 1'
gem 'http', '~> 4.3.0'
gem 'redis', '~> 4.1.3'
gem 'jwt', '~> 2.2.1'
gem 'pundit', '~> 2.1.0'
gem 'blueprinter', '~> 0.23.0' …
Run Code Online (Sandbox Code Playgroud) 我有
Ruby 3.0.4
Rails 6.1.7
pg 1.4.5
postgresql 14.6
Run Code Online (Sandbox Code Playgroud)
这是我的database.yml 文件
development:
adapter: postgresql
encoding: utf8
database: olio_development
username: postgres
password: password
pool: 5
host: 127.0.0.1
port: 5432
gssencmode: disable
Run Code Online (Sandbox Code Playgroud)
当我运行 rake db:create 时,出现以下分段错误
/home/usr/.rvm/gems/ruby-3.0.4/gems/pg-1.4.5/lib/pg/connection.rb:626: [BUG] Segmentation fault at 0x00007fd79729a140
Run Code Online (Sandbox Code Playgroud)
ruby 3.0.4p208(2022-04-12 修订版 3fa771dded)[x86_64-linux]
-- Control frame information -----------------------------------------------
c:0050 p:---- s:0275 e:000274 CFUNC :connect_poll
c:0049 p:0543 s:0271 e:000270 METHOD /home/suganya/.rvm/gems/ruby-3.0.4/gems/pg-1.4.5/lib/pg/connection.rb:626
Run Code Online (Sandbox Code Playgroud)
连接失败。
我已经验证 postgres 正在运行并且位于主机 127.0.0.1 和帖子 5432 上。
请帮我解决这个分段错误?
当我尝试将网站更新到 Ruby 3.0.0 时,出现以下错误:
ArgumentError(参数数量错误(给定 2,预期 1))
% rails console
Loading development environment (Rails 6.1.0)
irb(main):001:0> puts RUBY_VERSION
3.0.0
irb(main):002:0> puts IceCube::VERSION
0.16.3
irb(main):003:0> schedule = IceCube::Schedule.new
=> #<IceCube::Schedule:0x00007fccfe19cfa8 @start_time=2020-12-27 11:14:30 -0800, @all_recurrence_rules=[], @all_exception_rules=[]>
irb(main):004:0> puts schedule.to_ical
Traceback (most recent call last):
1: from (irb):4:in `<main>'
ArgumentError (wrong number of arguments (given 2, expected 1))
Run Code Online (Sandbox Code Playgroud)
以下是与 Ruby 2.7.2 相同的命令
% rails console
Loading development environment (Rails 6.1.0)
irb(main):001:0> puts RUBY_VERSION
2.7.2
irb(main):002:0> puts IceCube::VERSION
0.16.3
irb(main):003:0> schedule = IceCube::Schedule.new
=> …
Run Code Online (Sandbox Code Playgroud) 在 ruby 3 之前,可以这样做
def test a, **o
p a, o
end
t = [:ok, **{ok: 2}]
test *t
Run Code Online (Sandbox Code Playgroud)
它会正确分配
:ok 到 a 和 {ok: 2} 到 o
在 ruby 3 中调用
你会得到
ArgumentError (wrong number of arguments (given 2, expected 1))
Run Code Online (Sandbox Code Playgroud)
是否可以解决将关键字参数保留在第二个位置的 splat 数组参数?
在尝试运行“irb”时,我遇到了以下错误:
<internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- rdoc (LoadError)
Run Code Online (Sandbox Code Playgroud)
从
from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.1/lib/irb/input-method.rb:17:in `<top (required)>'
from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.1/lib/irb/context.rb:14:in `require_relative'
from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.1/lib/irb/context.rb:14:in `<top (required)>'
from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.1/lib/irb.rb:16:in `require_relative'
from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.1/lib/irb.rb:16:in `<top (required)>'
from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
from /usr/lib/ruby/gems/3.0.0/gems/irb-1.4.1/exe/irb:9:in `<top (required)>'
from /usr/bin/irb:25:in `load'
from /usr/bin/irb:25:in `<main>'
Run Code Online (Sandbox Code Playgroud)
我尝试将ruby版本从3.0.3降级到2.7,但没有成功;有同样的错误。