标签: ruby

在为每个使用时识别最后一个循环

我想在对象上执行'foreach'时,对最后一个循环迭代做一些不同的事情.我正在使用Ruby,但C#,Java等也是如此.

  list = ['A','B','C']
  list.each{|i|
    puts "Looping: "+i # if not last loop iteration
    puts "Last one: "+i # if last loop iteration
  }
Run Code Online (Sandbox Code Playgroud)

所需的输出相当于:

  Looping: 'A'
  Looping: 'B'
  Last one: 'C'
Run Code Online (Sandbox Code Playgroud)

显而易见的解决方法是使用代码将代码迁移到for循环'for i in 1..list.length',但for each解决方案感觉更优雅.在循环期间编写特殊情况的最优雅方法是什么?可以用foreach完成吗?

c# ruby java foreach loops

48
推荐指数
7
解决办法
5万
查看次数

将控制器中的POST数据提交到Rails中的另一个网站

  1. 用户提交包含一些基本数据的表单.

  2. 数据由控制器中的动作接收和处理,并且添加了需要保持私有的更多信息.

  3. 然后我需要向外部网站发送一个发布请求,其中包含来自控制器的所有组合数据.

做这个的最好方式是什么?

ruby forms ruby-on-rails request form-submit

48
推荐指数
4
解决办法
7万
查看次数

如何获得符号链接的目标?

我有一个字符串,其中包含现有符号链接的文件系统路径.我想获得此链接指向的路径.

基本上我想要通过这些hackery得到同样的东西:

s = "path/to/existing/symlink"
`ls -ld #{s}`.scan(/-> (.+)/).flatten.last
Run Code Online (Sandbox Code Playgroud)

但是我想在没有炮轰的情况下这样做.

ruby symlink

48
推荐指数
3
解决办法
2万
查看次数

在标准"生产"或"开发"之外的不同数据库上使用Rails迁移

我有一个运行的rails项目,它定义了标准生产:,:开发和:在config/database.yml中测试数据库连接

另外我有一个quiz_development:和quiz_production:定义指向不同的主机/ db/user/password

我现在的目标是定义一个使用" quiz_#{RAILS_ENV}`"作为其数据库配置的迁移.

我尝试过(并且失败了):

  • 在迁移文件中设置ActiveRecord :: Base.connection
  • 在rails中更改db:migrate任务以在那里设置ActiveRecord :: Base.connection

题:

如何使rake db:migrate使用其他数据库定义?

谢谢,弗兰克

ruby database migration ruby-on-rails

48
推荐指数
10
解决办法
3万
查看次数

在条件子句中赋值是否具有良好的ruby风格?

为了更简洁地写,而不是这样做:

test_value = method_call_that_might_return_nil()
if test_value
  do_something_with test_value
end
Run Code Online (Sandbox Code Playgroud)

我一直在条件中分配:

if test_value = method_call_that_might_return_nil()
  do_something_with test_value
end
Run Code Online (Sandbox Code Playgroud)

这是不好的风格?更简洁的语法:

do_something_with test_value if test_value = method_call_that_might_return_nil()
Run Code Online (Sandbox Code Playgroud)

根据Matz(http://redmine.ruby-lang.org/issues/show/1141),正如另一个SO问题所讨论的那样,不允许在1.9中保持这种状态.

鉴于分配和比较可能混淆,这是否使得阅读代码变得太难?

ruby coding-style

48
推荐指数
4
解决办法
2万
查看次数

Ruby:合并嵌套哈希

我想合并一个嵌套的哈希.

a = {:book=>
    [{:title=>"Hamlet",
      :author=>"William Shakespeare"
      }]}

b = {:book=>
    [{:title=>"Pride and Prejudice",
      :author=>"Jane Austen"
      }]}
Run Code Online (Sandbox Code Playgroud)

我想合并是:

{:book=>
   [{:title=>"Hamlet",
      :author=>"William Shakespeare"},
    {:title=>"Pride and Prejudice",
      :author=>"Jane Austen"}]}
Run Code Online (Sandbox Code Playgroud)

实现这个目标的巢方法是什么?

ruby hash merge nested

48
推荐指数
6
解决办法
3万
查看次数

Ruby注入初始为哈希

可以任何人告诉我为什么以下:

['a', 'b'].inject({}) {|m,e| m[e] = e }
Run Code Online (Sandbox Code Playgroud)

抛出错误:

IndexError: string not matched
        from (irb):11:in `[]='
        from (irb):11:in `block in irb_binding'
        from (irb):11:in `each'
        from (irb):11:in `inject'
        from (irb):11
        from C:/Ruby192/bin/irb:12:in `<main>'
Run Code Online (Sandbox Code Playgroud)

而以下工作?

a = {}
a["str"] = "str"
Run Code Online (Sandbox Code Playgroud)

ruby

48
推荐指数
3
解决办法
2万
查看次数

安装nokogiri时出错:无法构建gem原生扩展并且缺少libiconv(OSX)

我尝试克隆这个仓库并运行bundle install.捆绑过程失败并抛出此错误:

    ...
    Installing nokogiri 1.6.2.1 with native extensions
    Building nokogiri using packaged libraries.

    Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

        /Users/zulhilmizainudin/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20151130-43880-pntnc6.rb extconf.rb
    Building nokogiri using packaged libraries.
    -----
    libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
    -----
    *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of necessary
    libraries and/or headers.  Check the mkmf.log file for more details.  You may
    need configuration options.

    Provided …
Run Code Online (Sandbox Code Playgroud)

ruby homebrew ruby-on-rails nokogiri osx-yosemite

48
推荐指数
7
解决办法
4万
查看次数

服务器是在主机"localhost"(:: 1)上运行并在端口5432上接受TCP/IP连接吗?

在此之前,请注意我在Stack Overflow和网络上的文章中发现了几个类似的问题,但这些都没有帮助我解决我的问题:

现在,问题在于:

  • 我有一个像魅力一样的Rails应用程序.
  • 与我的合作者一起,我们使用GitHub一起工作.
  • 我们有一个master和一个mvp分支机构.
  • 我最近git用Homebrew(Mac)更新了我的版本.
  • 我们使用Foreman在本地启动我们的应用程序.

现在,当我尝试在本地启动应用程序时,出现以下错误:

PG::ConnectionBad at /
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
Run Code Online (Sandbox Code Playgroud)

我试图多次重启计算机.

我还检查了以下内容/usr/local/var/postgres:

PG_VERSION      pg_dynshmem     pg_multixact    pg_snapshots    pg_tblspc       postgresql.conf
base …
Run Code Online (Sandbox Code Playgroud)

ruby postgresql ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

48
推荐指数
9
解决办法
8万
查看次数

找不到带有可执行 pod 的 gem cocoapods (&gt;= 0.a) (react-native pod install)

我刚刚开始一个反应本机项目。然而这个问题却困扰了我一天。我尝试了所有可能的方法来解决它。例如,

sudo gem uninstall cocoapods
rvm uninstall
brew install cocoapods
Run Code Online (Sandbox Code Playgroud)

然而,我却没有运气。我想指出,我可以pod --version在其他路径下,但当我尝试pod在我的项目路径下时会出现问题。我还尝试将rvm默认版本设置为2.7.5,但问题仍然发生。另外,我没有使用Apple M1

Traceback (most recent call last):
    4: from /Users/nicholas/.rvm/gems/ruby-2.7.5/bin/ruby_executable_hooks:22:in `<main>'
    3: from /Users/nicholas/.rvm/gems/ruby-2.7.5/bin/ruby_executable_hooks:22:in `eval'
    2: from /Users/nicholas/.rvm/gems/ruby-2.7.5/bin/pod:23:in `<main>'
    1: from /Users/nicholas/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems.rb:296:in `activate_bin_path'
/Users/nicholas/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems.rb:277:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
Run Code Online (Sandbox Code Playgroud)

ruby cocoapods react-native

48
推荐指数
4
解决办法
7万
查看次数