모델을 만들려고 할 때 'rails generate'명령이 중단됨
저는 rails를 처음 접했고 오늘 아침 전체 데이터베이스 디자인 / 모델을 버리고 다시 시작하기로 결정했습니다. 그리고 멍청이이기 때문에 나는 그것을 잘못했다고 확신합니다.
모든 파일을 제거 db/migrate/
하고 테이블을 삭제했습니다. 그리고 첫 번째 새 모델 클래스를 생성하려고했을 때 레일이 매달려있었습니다. ^ C를 누르고 다른 것을 시도하기 전에 10 분 동안 잡초를 벗어났습니다.
이번에는 다시 테이블을 삭제하고 전체 프로젝트를 project.bad로 옮긴 다음 처음부터 다시 시작하기 위해 레일을 실행했습니다. 다시, 이전 이름으로 새 프로젝트를 생성 한 후 rails generate
명령에 멈췄습니다 (동일한 프로젝트 이름을 사용했습니다).
필사적으로 같은 루트에 다른 이름으로 새 프로젝트를 만들려고했습니다. 유레카! 이것은 컨트롤러와 모델 클래스를 만드는 챔피언처럼 작동했지만 원래 프로젝트 이름을 사용하여 원래 프로젝트 또는 새로 만든 이름을 사용하여 아무것도 생성 할 수 없습니다. 이 작업을 다시 수행하려면 무엇을 놓치고 있습니까? 이 시점에서 완전한 손실은 신경 쓰지 않지만 원래 프로젝트 이름을 다시 사용할 수 있기를 바랍니다!
log / development.log는 다음과 같습니다.
(255.5ms) CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL) ENGINE=InnoDB
(337.7ms) CREATE UNIQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`)
ActiveRecord::SchemaMigration Load (0.2ms) SELECT `schema_migrations`.* FROM `schema_migrations`
(0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations`
마지막 SELECT 이후에 무슨 일이 일어날 지 아십니까?
귀하의 경우 rails generate
명령이 중지, 레일의 생성 binstubs으로 문제가 있다는 가능성이 높습니다. 언급했듯이 프로젝트 이름을 변경했습니다.
내 추측은 binstub의 일부 경로가 여전히 이전 프로젝트 디렉토리로 설정되었지만 더 이상 존재하지 않는다는 것입니다.
binstubs가 작동하는 방법에 대한 훌륭한 기사가 있습니다 : https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs
레일 4
binstub을 재설정하려면 bin/
rails에서 디렉토리를 삭제 하고 다음을 실행하십시오.
# generates binstubs for ALL gems in the bundle
bundle install --binstubs
# ...OR, generate binstubs for a SINGLE gem (recommended)
bundle binstubs rake
레일 5 / 레일 6
binstub을 재설정하려면 bin/
rails에서 디렉토리를 삭제 하고 다음을 실행하십시오.
rake app:update:bin
'rails'명령 자체가 아니라 레일 5 이상에 대해 'rake'명령을 사용해야하는 이유는 무엇입니까?
rails 5 이후 일부 'rake'명령은 'rails'명령 내에 캡슐화됩니다. 그러나 'bin /'디렉토리를 삭제하면 'rails'명령 자체도 제거되므로 'rails'는 더 이상 사용할 수 없지만 'rake'는 여전히 존재하므로 재설정을 위해 'rake'로 돌아 가야합니다.
http://www.dixis.com/?p=754 에서 찾았습니다 .
내 프로젝트 중 하나를 위해 레일 4.1 (블리딩 엣지! 예 :))을 사용하고 있는데 갑자기 아침에 랩톱을 연 후 내 일반 레일 명령이 다음과 같이 나타납니다.
$> rails c
$> rails g migration Bla name description some_more_fields
그냥… 매달려 있었고 아무 일도 일어나지 않았나요 ??? 추가 입력을 기다리는 것처럼. 면밀한 조사를 통해 스프링 프로세스와의 연결이 끊어 지거나 손상되었다고 가정했습니다 (네트워크 사이를 많이 이동합니까? 아마도 설명 할 수있을 것입니다).
내가 알지 못하는 사람들에게 스프링은 Rails 애플리케이션 프리 로더입니다. 애플리케이션을 백그라운드에서 계속 실행하여 개발 속도를 높이므로 테스트, 레이크 작업 또는 마이그레이션을 실행할 때마다 부팅 할 필요가 없습니다. 물론 연결이 끊어 지거나 손상되면 중단됩니다.
간단한
$> spring stop
스프링 서버를 중지하면 rails 명령이 자동으로 다시 시작합니다. 고정 :)
Rails 5에서 binstup은 rails
명령을 사용하여 생성됩니다 .
방금 bin 폴더를 삭제 한 다음 실행 rails app:update:bin
하여 문제를 해결했습니다.
Rails 5에서 앱의 bin / 디렉토리에는 요청시 생성되는 스텁이 아니라 다른 소스 코드와 같이 버전이 지정된 실행 파일이 포함되어 있습니다.
업그레이드 방법은 다음과 같습니다.
bundle config --delete bin # Turn off Bundler's stub generator rails app:update:bin # Use the new Rails 5 executables git add bin # Add bin/ to source control
나는 사용하려고 할 때 같은 문제가 있었고 rails g controller
그냥 멈출 것입니다. @mtrolle이 제안한 것과 동일한 단계를 사용했습니다.
bundle config --delete bin
rails app:update:bin
git add bin
그래서 내가 실행했을 때 : 예상대로 rails g controller Project index
컨트롤러, 도우미 및 인덱스 뷰와 GET 'project/index'
경로를 생성했습니다.
'development' 카테고리의 다른 글
APK 생성시 네이티브 Android 중복 파일 오류에 대응 (0) | 2020.12.31 |
---|---|
Android 자동 가로 스크롤 TextView (0) | 2020.12.31 |
Git 현재 분기 및 색상이있는 PS1 라인 (0) | 2020.12.31 |
"잘못된 토큰"오류를 제공하는 Asp.NET Identity 2 (0) | 2020.12.31 |
안드로이드의 편집 텍스트에서 신용 카드 포맷 (0) | 2020.12.31 |